Автоматическая установка сертификата от Let's encrypt

Недавно получил сообщение о том, что заканчивается срок действия SSL-сертификата на моем сайте socionics.me. Посмотрев условия продления, выяснил, что цены снова подорожали, и задумался о поиске альтернатив. Первое, что стал рассматривать — это Let's Encrypt и SSL for free. Но и там, и там сертификаты выдают всего на 90 дней, что, на мой взгляд, очень мало.
Однако на сайте Let's Encrypt обнаружилась ссылка на проект под названием Certbot, который представляет собой скрипт, позволяющий автоматизировать выпуск, установку и обновление сертификатов от Let's encrypt. Я решил попробовать его в действии. Установка под Ubuntu оказалась достаточно простой — нужно добавить соответствующий репозиторий и установить сам бот:
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo add-apt-repository universe $ sudo add-apt-repository ppa:certbot/certbot $ sudo apt-get update $ sudo apt-get install certbot python-certbot-nginx
После этого Certbot был установлен и готов к работе , но были опасения, что он может вызвать конфликт с уже существующими настройками SSL. (Поэтому на всякий случай советую делать резервные копии файлов конфигурации nginx или Apache перед запуском).
Запускается установка и получение сертификата очень просто:
$ sudo certbot --nginx

или $ sudo certbot --apache, если используется Apache в качестве основного сервера.
К моему огромному удивлению, Certbot корректно разобрал файл конфигруации nginx, по нему определил мой домен и предложил сгенерировать сертификат для него. Более того, он обнаружил директивы ssl_certificate и ssl_certificate_key для старого сертификата и его ключа, и корректно заменил в них пути для нового! Таким образом, меньше чем через две минуты после запуска бота мой сайт уже показывал, что при SSL-подключении используется новый сертификат.
Далее оставалось три простых действия: сделать резервную копию /etc/letsencrypt на свой компьютер, подтвердить адрес Email по присланной на него ссылке, и прописать в crontab обновление сертификата:
45 3 * * 3,6 /usr/bin/sudo /usr/bin/certbot renew -n -q
В данном случае проверка происходит в 3:45 два раза в неделю. Но при этом Certbot умеет проверять, истекает ли сертификат в скором времени, и обновляет его только в случае необходимости.
Таким образом, единожды настроив Certbot, можно больше не вспоминать о необходимости обновления сертификатов.