Связаться
Автор
Миша Радионов

Быстрый старт с Let’s Encrypt Certbot + Nginx, Digital Ocean, HTTP/2

Опубликовано: 02 Фев 2018
Вернуться в блог

Что это

Let’s Encrypt — проект Mozilla и еще нескольких компаний стартовавший в 2014 году как удостоверяющий центр для предоставления безопасных, при этом бесплатных TLS (SSL) сертификатов. Срок жизни сертификата — 3 месяца.

Certbot — CLI-программа для Linux, помогающая получать и устанавливать сертификаты от Let’s Encrypt.

  • Лень читать? Можете сразу перейти к видео, в нем есть вся информация этой статьи.

Аутентификатор и инсталлятор

Аутентификатор проверяет принадлежит ли вам домен, получает сертификат и кладет его к себе в  /etc/letsencrypt .

Инсталлятор устанавливает сертификат на ваш сервер.

3 типа аутентификации (challenges)

Ниже приведены три доступных для LE способа проверить, принадлежит ли вам домен.

1. HTTP. В папке .well-known/acme-challenges  создается временный файл и снаружи проверяется, доступен ли этот файл.

2. TLS SNI (в народе SSL). Проверка по временному самоподписанному сертификату.

3. DNS. В ресурсную запись домена TXT добавляется код, затем проверяется снаружи есть ли такая запись.

Выбор типа аутентификации можно передать с помощью, например,  —preferred-challenges tls-sni.

5 плагинов

1. Apache. Аутентификатор, инсталлятор. Поддерживает tls аутентификацию. Подходит, если у вас Apache с поддержкой библиотеки  libaugeas0 1+.

2. Webroot. Аутентификатор. Поддерживает http аутентификацию. Подходит, если у вас старый или нестандартный веб-сервер.

3. Nginx. Аутентификатор, инсталлятор. Поддерживает tls аутентификацию. Подходит, если у вас Nginx.

4. Standalone. Аутентификатор. Поддерживает http и tls аутентификацию. Сам поднимет веб-сервер для аутентификации.

5. Manual. Аутентификатор. Поддерживает dnshttp и tls аутентификацию. Подходит, если вы хотите все сделать руками.

Выбрать плагин можно с помощью команд типа  —nginx или  —webroot. Выбрать отдельно аутентификатор, отдельно инсталлятор можно, например, через  -a webroot -i apache.

Установка certbot

Чтобы установить Certbot, достаточно перейти на https://certbot.eff.org/, выбрать дистрибутив Linux и тип веб-сервера.

Чтобы узнать версию Linux, выполните

 cat /etc/issue

Чтобы узнать ваш тип веб-сервера есть много способов, например

 netstat -nlpt | grep 80 

Инструкции в пошаговом видео

Результат

LE-test

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

Обновление всех сертификатов можно запустить командой certbot renew . Если сертификаты обновлять еще рано, certbot не станет их обновлять.

Запуск в холостую (проверка вашей команды)

Однако, если вам нужно проверить, доступно ли обновление сертификата/ов определенным способом, рекомендую использовать ключ —dry-run , который сымитирует перевыпуск сертификатов, проверив правильность вашей команды.

Задание для планировщика

Когда вы проверили свою команду для обновления сертификатов, ее следует добавить в планировщик cron. Для этого выполните crontab -e , затем в открывшемся редакторе допишите строку 0 0,12 * * * certbot renew . Данное правило будет выполняться дважды в день каждый день. Если сертификаты обновлять будет рано, то Certbot не станет их обновлять.

Нюансы

Кеш сертификата в браузере

Браузер (у меня Chrome) довольно сильно кеширует данные сертификата и обычным  cmd+shift+R  ( ctrl+shift+R  на Windows) не всегда получается получить новые данные. Я нашел кнопку, которая сбрасывает кеш сертификата. Нажмите  cmd+Y (история), дальше нажмите  очистить , затем поставьте галку на «Изображения и другие данные, сохраненные в кэше».

chrome-ssl

HTTP/2 — на десерт

Если у вас Nginx версии 1.9.5+ (проверять с помощью  nginx -v)
Если ваш Nginx собран с поддержкой http2 модуля (проверять с помощью  nginx -V)

Вы можете дописать после listen 443 ssl параметр http2  и у вас будет http/2 соединение!

http2

Короткая ссылка на презентацию — https://flagsoft.ru/letsencrypt