Могу ли я использовать Certbot для добавления сертификата Lets Encrypt в качестве временного промежутка между ежегодными продлениями?
У меня истек срок действия SSL-сертификата в выходные, клиент пропустил письмо с обновлением, и, очевидно, он не был доволен, что на его сайте отображались предупреждения SSL.
Поскольку я использовал Lets Encrypt на многих сайтах, я подумал, могу ли я использовать Certbot, чтобы проверить срок действия купленных сертификатов и заменить его на Lets Encrypt Cetificate между обновлениями SSL. Кто-нибудь знает, сработает ли что-то подобное? Я обеспокоен тем, что продление купленного сертификата может быть испорчено им, и я не уверен, будут ли какие-либо дополнительные настройки для Certbot для работы таким образом.
Есть ли у кого-нибудь совет о том, как лучше всего обрабатывать обновления SSL. На самом деле просто нужно некоторое руководство здесь.
2 ответа
Да, замена ежегодного сертификата на Letsencrypt предотвратит дальнейшие проблемы, когда требуется ручное вмешательство.
1) Установите Certbot. 2) выдайте свой первый сертификат, включите все предварительные перехваты, чтобы убедиться, что новый сертификат загружается при обновлении ( перезапуск nginx и т. Д.). Установите адрес электронной почты для продления / аккаунта либо в систему тикетов, либо в список рассылки (если вы уходите, кто-то другой проверяет наличие неудачных продлений) Я рекомендую использовать webroot, есть тонна документации о том, как это сделать.
3) настроить cron для запуска certbot renew
время от времени, (через некоторое время вы можете перезапустить сервис без негативного влияния на пользователей, но через некоторое время вы можете быстро исправить возникшие проблемы).
Нет, Certbot не является средством мониторинга сторонних сервисов, закажите сторонние сервисы для этого. Также помните, что certbot является клиентом ACME, который использует Letsencrypt.
В скрипте могут быть ошибки, я его не тестировал! Пожалуйста, не запускайте его на производстве. Но я верю, что это должно быть примерно так:
#!/bin/bash
my_domain=example.com
my_ip=88.208.57.20 # could be example.com
my_port=443
seconds=86400 # 24h
cert_bot_cert="/etc/letsencrypt/live/$my_domain/fullchain.pem"
cert_bot_key="/etc/letsencrypt/live/$my_domain/privkey.pem"
native_cert="/etc/nginx/ssl/$mydomain/cert.crt"
native_key="/etc/nginx/ssl/$mydomain/key.key"
function certrw {
cat $cer_bot_cert > $native_cert && cat $cert_bot_key > $native_key && nginx -t && service nginx reload
}
expire_date=$(date -d "$(echo | openssl s_client -servername $my_domain -connect $my_ip:$my_port 2>/dev/null | openssl x509 -noout -dates|grep notAfter|cut -d '=' -f2)" +%s)
today=$(date +%s)
diff=$(echo $expire_date-$today|bc)
if [ $diff -lt $seconds ];then
certbot certonly --webroot -w /var/www/letsencrypt/ -d $my_domain && certrw
fi