Установка бесплатного ssl сертификата с помощью letsencrypt и certbot

С недавнего времени chrome начал помечать сайты работающие по протоколу http как небезопасные. А это значит самое время настроить ssl сертификат. Чтобы получить ssl сертификат совсем не обязательно платить за него. Можно воспользоваться бесплатным сертификатом от letsencrypt. И в этом нам поможет официальный клиент - certbot.


Ниже простая приведена простая инструкция по подключению ssl сертификата на веб сервер. А так же пример автопродления этого сертификата.


1. Установить certbot 

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



2. Запустить certbot для получения сертификата 

sudo ./path/to/certbot-auto certonly --standalone -d example.com -d www.example.com

В новых версиях certbot можно добавить команды для упрощенного подключения серитфиката, путем анализа файлов конфигов веб-сервера. Поддерживаются все популярные веб серверы. Мы для примера возмем nginx

sudo ./path/to/certbot-auto --nginx

Данная команда создаст сертификат, а так же отредактирует ваши конфиги, добавив туда полученные сертификаты.

Если вы хотите внести изменения в конфиги вручную - существует следующая команда:

sudo ./path/to/certbot-auto --nginx certonly

Далее, если ваши конфиги коректны certbot предложит выбрать домены на которые будут подключены сертификаты.

Далее certbot получит сертификаты. И выведет сообщение с путями до публичного (fullchain.pem) и приватного (privkey.pem) ключа сертификата. А так же дату окончания сертификата. 


3. Добавление сертификатов в конфиг веб сервера.

В этой статье мы рассматриваем установку сертификата на сервер с nginx.

В блок server добавьте следующие строки


listen ssl;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

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

sudo ./path/to/certbot-auto renew



Автоматической обновления сертификата

Для автоматической обновления сертификата нужно создать cron-задание. 

crontab -e

И добавить в файл конфигурации запись, например:


0 2 * * * ./path/to/certbot-auto renew


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