Получение SSL сертификата от Let’s Encrypt.

certbot let's encrypt

Let’s Encrypt - центр сертификации от некоммерческой организации ISRG (Internet Security Research Group) выдающий бесплатные SSL сертификаты для всех желающих. Помимо своей бесплатности у сертификатов Let’s Encrypt есть еще одно преимущество, они выдаются навсегда. Навсегда это конечно образно сказано, вообще-то на три месяца, но если настроить автоматическое обновление, без участия пользователя, то можно сказать что навсегда.

При получении сертификата от Let’s Encrypt от пользователя практически ничего не требуется. Не нужно создавать CSR запросы и ключи, как в случае с сертификатом от COMODO. Весь процесс сводится к установке программы Certbot, после чего все необходимое программа сделает сама, включая проверку домена и получение сертификата.

В этой статье я опишу процесс установки Certbot с дальнейшим получением сертификатов.

Если у вас не установлен пакет для управления репозиториями, то его следует установить.

Добавим репозиторий certbot в систему.
Устанавливаем certbot.

Перед получением сертификата необходимо немного настроить Nginx, точнее не настроить а добавить в контекст server {} обслуживающий ваш сайт, следующий локейшен.

Дело в том, что Certbot создаст скрытый каталог .well-known в коревой директории сайта, для подтверждения владения доменом. Этот каталог должен быть доступен для проверяющего сервера. Вот так выглядит лог доступа проверяющего сервера, когда он обращается к каталогу для проверки.

Перечитаем настройки Nginx.
Теперь зарегистрируемся в Let’s Encrypt, почту указываем свою.

Certbot предложит прочитать пользовательское соглашение и подтвердить свое согласие, для подтверждения введите "a" и нажмите Enter.

Если хотите разрешить присылать вам письма с уведомлениями нажмите "y", если не хотите нажмите "n".

Чтобы убедиться что все работает как надо, перед получением сертификата можно провести проверку (необязательно).

Опция --dry-run указывает что Certbot будет запущен в тестовом режиме, без сохранения сертификатов на диск. Опция -a указывает на способ проверки сертификата, в нашем случае webroot. Опцией --webroot-path указываем корневой каталог сайта, для которого получаем сертификат. Опция -d задает домен для которого будет выдан сертификат, следует указать два вида домена с www и без.

Если все в порядке, то будет следующий ответ.

Переходим к получению сертификатов. Та же команда что и при проверке, только без --dry-run.

Если порядок, то увидим следующее.

Все cертификаты будут в каталоге /etc/letsencrypt/live/test.com, этот каталог нужно будет указать в конфигурации Nginx.

Добавляем сертификаты в конфигурацию сервера, заодно указываем все остальные нужные для SSL параметры. В этой статье я не буду описывать что к чему, а просто приведу готовую конфигурацию. Более подробно все было описано в статье о переводе Nginx на использование HTTPS.

Примерный конфигурационный файл Nginx.

Если есть желание, то можно сгенерировать DH ключ для DHE шифров и подключить его отдельной опцией ssl_dhparam /etc/nginx/ssl/dh_2048.pem;

Создадим каталог /etc/nginx/ssl и перейдем в него.

Сгенерируем DH ключ.

Для автоматического продления сертификатов нужно добавить задание в cron. Следующая строка будет запускать обновление сертификатов каждый день два раза в сутки.

Чтобы добавить задание в cron.
Если cron не использовался, то содержание должно быть таким.

Сохранить изменения в файле Ctrl+O потом нажать Enter и выйти Ctrl+X. Таким образом каждый день certbot будет пытаться обновить сертификаты и когда подойдет срок их обновления они будут обновлены автоматически.