User Tools

Site Tools


Sidebar


Здравствуйте!

Меня зовут Михаил!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Моя специализация - виртуализация!

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (910) 911-96-23

linux_faq:lets_encrypt_certificates_on_ubuntu

Скачиваем скрипт certbot-auto

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

После этого нужно запустить его и он установит нужные зависимости:

sudo ./certbot-auto

Теперь осталось положить этот скрипт куда-нибудь в систему, что потом выполнять его через cron для обновления сертификатов:

sudo cp ./certbot-auto /usr/local/bin/

Настройка web-сервера

При получении сертификата скрипт проверяет что мы управляем доменом, на который получаем серт. Для этого он создает на сервере проверочный файл и выдающий сертификат сервер запрашивает этот файл. Для того, чтобы все работало, на web-сервер должен быть сконфигурирован доступ к скрытой директории /.well-known/acme-challenge/.
В противном случае - скрипт постоянно ругается с ошибкой:

Failed authorization procedure. wiki.autosys.tk (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://wiki.autosys.tk/.well-known/acme-challenge/fsS43RbAQXN2s9rhftKocls_trASu5_7k4nz9kf8CTg

В nginx нужно закомментировать что-то такое:

location ~ /\. { deny all;

Получаем сертификат одной командой

./certbot-auto certonly --webroot -w /var/www -d wiki.autosys.tk

Сертификаты попадают в папку /etc/letsencrypt/live/

Обновляем

Проверяем что все обновляется:

certbot-auto renew --dry-run

Обновляем все сертификаты:

certbot-auto renew

Прописываем сертификаты в nginx

В секцию server сервера прописываем:

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/__your_domain__/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/__your_domain__/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

Тут важно, прописать fullchain.pem, а не cert.pem. Если прописать cert.pem, то не будет работать в некоторых браузерах, в частности - Chrome под Android

Создаем задачу в cron для автообновления

Создаем файлик /etc/cron.weekly/certs_renew :

#! /bin/sh
# renew all lets_encrypt_certs

/usr/local/bin/certbot-auto renew
service nginx reload

И делаем его исполняемым:

chmod a+x /etc/cron.weekly/certs_renew

Ошибки

Однажды, в логах я увидел такое:

Error: couldn't get currently installed version for /opt/eff.org/certbot/venv/bin/letsencrypt....

Оказалось, задача по обновлению сертов не смогла их обновить.
Немного погуглив выискалсь такое решение - нужно удалить пару папок с клиентом certbot (из-под пользователя, который устанавливал его):

sudo rm -rf /opt/eff.org/certbot/
sudo rm -Rf  ~/.local/share/letsencrypt

и переустановить certbot:

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo ./certbot-auto

А когда установочный скрипт начнет спрашивать про домены - просто остановить его, введя “c”.

Discussion

Enter your comment. Wiki syntax is allowed:
X K​ B A T
 
linux_faq/lets_encrypt_certificates_on_ubuntu.txt · Last modified: 2018/11/19 08:37 by admin