wiki:freebsd:letsencrypt_сертификат

Создание сертификата Let’s Encrypt для Nginx в FreeBSD

Let’s Encrypt – это центр сертификации (ЦС или CA), который предоставляет бесплатные TLS/SSL-сертификаты для поддержки шифрования HTTPS. Благодаря клиенту Certbot, который автоматизирует большую часть этапов, вы можете быстро получить свой сертификат.

Данный мануал поможет получить SSL-сертификат через Certbot и использовать его на сервере FreeBSD для защиты трафика Nginx. Также вы научитесь настраивать автоматическое обновление сертификатов.

Для настройки мы будем использовать стандартный конфигурационный файл Nginx. Однако мы рекомендуем вам создать отдельный виртуальный хост (блок server в Nginx) для каждого домена: это позволяет избежать общих ошибок и сохраняет конфигурации по умолчанию в качестве резервной настройки на случай сбоев.

  1. Сервер FreeBSD
  2. Веб-сервер Nginx

Обратите внимание: для получения сертификата Let’s Encrypt вам не нужно устанавливать и настраивать PHP или MySQL.

  • Зарегистрированное доменное имя, которым вы управляете. Если у вас еще нет зарегистрированного домена, вы можете получить его у одного из многочисленных регистраторов доменных имен (Namecheap, GoDaddy и т. д.).
  • DNS-запись А, направленная на домен или внешний IP-адрес сервера. С ее помощью Let’s Encrypt сможет подтвердить ваше право на домен. Для примера мы будем использовать example.com и www. example.com, поэтому нам необходимы две записи DNS.

Первый шаг к получению сертификата SSL – установить программное обеспечение certbot на сервер. Последнюю версию Certbot можно установить из портов FreeBSD.

cd /usr/ports/security/py-certbot && make install clean

Перейдите в каталог py-certbot-nginx в дереве портов:

cd /usr/ports/security/py-certbot-nginx

Выполните команду make еще раз в этом каталоге. Это установит плагин nginx для Certbot, который мы будем использовать для получения SSL-сертификатов:

make install clean

Во время установки плагина вы увидите пару синих диалоговых окон, которые выглядят так:

py27-certbot-nginx-0.25.1
+[x] DOCS  Build and/or install documentation?
<Ok>       <Cancel>

Это дает вам возможность установить документацию для плагина и его зависимостей. Для целей данного руководства вы можете просто нажать ENTER, чтобы принять параметры по умолчанию и установить документацию.

Certbot предлагает различные способы получения сертификатов SSL через разные плагины. Плагин nginx позаботится о переконфигурировании веб-сервера Nginx и перезагрузке конфигурационного файла.

certbot --nginx -d example.com -d www.example.com

Если это первый запуск certbot на этом сервере, клиент предложит вам ввести адрес электронной почты и принять условия шифрования Let’s Encrypt. После этого certbot свяжется с сервером Let’s Encrypt, а затем запустит проверку, чтобы убедиться, что домен, для которого вы запрашиваете сертификат, действительно принадлежит вам.

Если проверка пройдет успешно, Certbot спросит, как вы хотите настроить HTTPS:

. . .
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Сделайте свой выбор, затем нажмите Enter. Это обновит конфигурацию и перезагрузит Nginx, чтобы включить новые настройки. В конце certbot выдаст сообщением о том, что процесс прошел успешно, и скажет, где хранятся ваши сертификаты:

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-09-24. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /usr/local/etc/letsencrypt. You should
make a secure backup of this folder now. This configuration
directory will also contain certificates and private keys obtained
by Certbot so making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Теперь сертификаты загружены, установлены и настроены. Попробуйте открыть свой сайт с помощью https и обратите внимание на индикатор безопасности браузера (если все правильно, там будет значок зеленого замочка). Если вы протестируете свой сервер с помощью SSL Labs Server Test, он получит оценку A.

Убедившись, что сайт работает через HTTPS, вы можете перейти к заключительному этапу – настройке автоматического обновления сертификатов.

Сертификаты Let’s Encrypt действительны только в течение девяноста дней. Это должно побудить пользователей автоматизировать процесс продления сертификата. В этом разделе вы узнаете, как автоматизировать обновление сертификата с помощью задач cron. Прежде чем настроить автоматическое обновление, важно убедиться, что вы можете правильно обновлять сертификаты.

Чтобы протестировать процесс обновления, вы можете запустить сухой прогон certbot:

certbot renew --dry-run

Если команда не вернула ошибок, вы можете запланировать ее запуск в crontab.

crontab -e

Это откроет новый файл crontab. Добавьте в файл новую строку, которая будет запускать команду certbot renew дважды каждый день – в полдень и полночь. Команда certbot renew проверяет, скоро ли истекает срок действия сертификатов в системе, и пытается их обновить, если это необходимо.

0 0,12 * * * /usr/local/bin/certbot renew

Обратите внимание: поскольку команда crontab -e начинается с sudo, эта операция будет выполняться как root, так как для запуска certbot требуются привилегии суперпользователя.

Если процесс автоматического обновления не срабатывает, Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты, предупредив вас о завершении срока действия вашего сертификата.

MAIL:

smtpd_tls_cert_file=/etc/letsencrypt/live/smtp.example.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/smtp.example.com/privkey.pem
  • wiki/freebsd/letsencrypt_сертификат.txt
  • Последние изменения: 2019/08/02 12:33
  • (внешнее изменение)