Обновление сертификата Letsencrypt. Для nginx

· На чтение уйдёт 2 минуты · (331 слово)

Не так давно появилась такая добродушная компания, которая раздаёт бесплатно HTTPS-сертификаты. Есть один недостаток: срок действия сертификата 3 месяца. Есть ещё один недостаток: не очень-то они дружат с nginx. К сожалению, я уже толком не помню, как именно я генерировал сертификат (впрочем, я точно помню, что я использовал не релизную версию, а собрал сам из git).

Поэтому расскажу только про обновление сертификата Letsencrypt. У меня работает это всё вот так (подсмотрено у них на форуме):

[RU] ru ~ # cd /usr/local/src/letsencrypt 
[RU] ru letsencrypt # source venv/bin/activate
(venv)[RU] ru letsencrypt # letsencrypt --config /etc/letsencrypt/cli.ini -d baron.su -d www.baron.su -d new.baron.su -d old.baron.su certonly

А вот содержимое /etc/letsencrypt/cli.ini пришлось подкорректировать:

(venv)[RU] ru letsencrypt # cat /etc/letsencrypt/cli.ini 
authenticator = webroot
webroot-path = /var/www/baron.su
renew-by-default
agree-tos 
email = baron@example.com

Но ведь это слишком сложно запускать из cron. Поэтому идём дальше и попробуем вот так:

[RU] ru ~ # /usr/local/src/letsencrypt/venv/bin/letsencrypt --config /etc/letsencrypt/cli.ini -d baron.su -d www.baron.su -d new.baron.su -d old.baron.su certonly

Хм! А ведь сработало. Вот это можно уже и в cron добавить. Создадим файлик /etc/cron.monthly/letsencrypt. Посмотрим-ка, что в моём?

[RU] ru ~ # cat /etc/cron.monthly/letsencrypt 
#!/bin/sh
/usr/local/src/letsencrypt/venv/bin/letsencrypt --config /etc/letsencrypt/cli.ini -d baron.su -d www.baron.su -d new.baron.su -d old.baron.su certonly
service nginx reload

Разумеется, первая строчка — это команда. Её в ваш файл копировать не надо :-)

И вот, последний этап. Пробуем запустить его:

[RU] ru ~ # /etc/cron.monthly/letsencrypt

Работает! Оно мне заявило, что сертификат годен до 2016-06-04. Теперь, в апреле у меня должен будет самопродлиться сертификат вплоть до июля, в мае — до августа, и так далее. Честно говоря, я не уверен, что service nginx reload достаточно. Возможно, необходим именно рестарт сервера. Однако точно об этом узнаем лишь через месяц.

В связи с переездом с FirstVDS на RuWeb по причине , проверять это будет непросто. У меня сейчас параллельно на двух серверах работают мои ресурсы. Возможно, проверить всё получится только в мае или июне. Если вы воспользовались этой мини-инструкцией, лучше всё-таки делать restart, для гарантированного достижения результата. А я — парень рисковый, я так попробую :)

Полезное