Что это
Let’s Encrypt — проект Mozilla и еще нескольких компаний стартовавший в 2014 году как удостоверяющий центр для предоставления безопасных, при этом бесплатных TLS (SSL) сертификатов. Срок жизни сертификата — 3 месяца.
Certbot — ClI — программа для Linux, помогающая получать и устанавливать сертификаты от Let’s Encrypt.
LE-test
Аутентификатор и инсталлятор
Аутентификатор проверяет принадлежит ли вам домен, получает сертификат и кладет его к себе в /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. Аутентификатор. Поддерживает dns, http и tls аутентификацию. Подходит, если вы хотите все сделать руками.
Выбрать плагин можно с помощью команд типа —nginx или —webroot. Выбрать отдельно аутентификатор, отдельно инсталлятор можно, например, через -a webroot -i apache.
Установка certbot
Чтобы установить Certbot, достаточно перейти на https://certbot.eff.org/, выбрать дистрибутив Linux и тип веб-сервера.
Чтобы узнать версию Linux, выполните
cat /etc/issue
Чтобы узнать ваш тип веб-сервера есть много способов, например
netstat -nlpt | grep 80
Обновление сертификата
Обновление всех сертификатов можно запустить командой 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://youtu.be/HaLy92BTALI
Ссылка на статью: https://flagstudio.ru/%D0%B1%D0%BB%D0%BE%D0%B3/lets_encrypt_certbot_nginx_digital_ocean