Продление сертификата Let’s Encrypt

Для того чтобы обновить (продлить) сертификат Let’s Encrypt необходимо сделать следующие действия.

Для того, чтобы обновлённые сертификаты заработали, необходимо перезагружать сервис, который используется сертификаты, например
/etc/init.d/nginx reload
Чтобы проверить состояние сертификатов, запустить команду:
/usr/bin/certbot certificates

Настройка nginx, если требуется. В файле конфигурации /etc/nginx/conf.d/def.conf прописываю строчку include acme сразу после заголовка server:

server {
include acme;
listen 80;
server_name _;
root /var/www;
index index.php index.html;
location / {
root /var/www;
}
}

В файле /etc/nginx/acme прописывается:

location ^~ /.well-known/acme-challenge/ {
alias /var/www/html/;
}

Перейти в каталог, где установлен Let’s Encrypt. У меня это каталог /tmp/letsencrypt (при других вариантах установки это может быть каталог /opt/letsencrypt).

cd letsencrypt

Останавливаем веб-сервер (обычно это nginx, но в моём варианте я отключал apache).

sudo service apache2 stop

Обновление letsencrypt.

git pull

Обновление сертификатов.

./letsencrypt-auto renew

При выполнении данной команды, я получил ошибку и сертификаты не обновились.

Attempting to renew cert from /etc/letsencrypt/renewal/vot-tak-vot.tk.conf produced an unexpected error: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',). Skipping.

Выйти из положения мне помогла вот такая команда.

./certbot-auto certonly --debug --force-renew -a manual -d www.domain.com -d domain.com

«domain.com» надо заменить на имя своего домена. После выполнения команды необходимо вручную проделать некоторые действия, которые описаны в командной строке (создать файл имя и содержимое которого указано в командной строке). После этого сертификаты были успешно созданы. Перезагружаем апач.

sudo service apache2 restart
To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto  again. To non-interactively renew *all* of your certificates, run "certbot-auto renew"

В идеале работает авто обновление из cron:

0 0 1 * * /tmp/letsencrypt/letsencrypt-auto renew && service apache2 restart

Установлено раз в месяц.


Ошибки и их решение.

При обновление сертификата ошибка:

Attempting to parse the version 0.14.2 renewal configuration file found at /etc/letsencrypt/renewal/mail.vot-tak-vot.tk.conf with version 0.10.2 of Certbot. This might not work.

Одно из решений поправить версию в конфиге хоста /etc/letsencrypt/renewal/. 


Если возникает ошибка вида:

[error] 22638#0: *73 access forbidden by rule, client:

настроить nginx как описано в статье.


Если в дальнейшем при обновлении сертификата возникает ошибка:

ConnectionError: HTTPSConnectionPool(host='acme-v01.api.letsencrypt.org', port=443): Max retries exceeded with url: /directory (Caused by NewConnectionError('<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x7fe605287890>: Failed to establish a new connection: [Errno -2] Name or service not known',))

ищите проблему в недоступности хоста acme-v01.api.letsencrypt.org (пинг, трасеровка, фаервол). Частично про эту проблему есть информация здесь — https://community.letsencrypt.org/t/max-retries-exceeded-with-acme-v01-api-letsencrypt-org-443/10711/9

Продление сертификата Let’s Encrypt: 2 комментария

  1. Спасибо за статью! Нашел здесь нужную команду на обновление серта вручную. А также пофиксил ошибку с конфликтом разных версий у certbot-auto и пакетного certbot.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *