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

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

Itnull

Команда форума
Администратор
Регистрация
22.05.13
Сообщения
25.569
Реакции
9.516
Веб-сайт
itnull.me
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1
Let’s Encrypt – это центр сертификации (ЦС или CA), который предоставляет бесплатные TLS/SSL-сертификаты для поддержки шифрования HTTPS. Благодаря клиенту Certbot, который автоматизирует большую часть этапов, вы можете быстро получить свой сертификат.

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

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

1: Установка Certbot​

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

Загрузите сжатый снапшот дерева портов:

Код:
sudo portsnap fetch

На выполнение этой команды может уйти несколько минут. После этого извлеките данные из снапшота:

Код:
sudo portsnap extract

На выполнение этой команды может потребоваться некоторое время. Как только она будет выполнена, перейдите в каталог py-certbot в дереве портов:

Код:
cd /usr/ports/security/py-certbot

С помощью make с привилегиями sudo загрузите исходный код Certbot и скомпилируйте его:

Код:
sudo make install clean

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

Код:
cd /usr/ports/security/py-certbot-nginx

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

Код:
sudo make install clean

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

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

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

Теперь certbot готов к использованию. Однако прежде чем получить сертификаты, важно настроить брандмауэр и открыть HTTPS-трафик.

2: Настройка брандмауэра и поддержка HTTPS-трафика​

Если вы уже настроили брандмауэр на своем сервере, вы должны убедиться, что он поддерживает доступ HTTPS (через порт 443). Если вы еще не настроили брандмауэр, вы можете сделать это сейчас.

Откройте файл rc.conf, который находится в каталоге /etc/:

Код:
sudo ee /etc/rc.conf

Этот файл сообщает FreeBSD, какие серверы следует автоматически запускать вместе с сервером. В верхней части файла добавьте следующие выделенные строки:


Код:
nginx_enable="YES"
firewall_enable="YES"

firewall_type="workstation"

firewall_myservices="22 80 443"

firewall_allowservices="any"

Эти директивы делают следующее:

  • firewall_enable=”YES” загружает брандмауэр во времы загрузки сервера.
  • firewall_type=”workstation”: FreeBSD предоставляет несколько типов брандмауэров по умолчанию, каждый из которых имеет несколько разные конфигурации. Брандмауэр workstation будет защищать этот сервер только с помощью stateful правил.
  • firewall_myservices=”22 80 443″: в этой директиве можно перечислить все необходимые TCP-порты. В данном случае брандмауэр открывает порты 22, 80 и 443 (SSH, HTTP и HTTPS соответственно).
  • firewall_allowservices=”any”: позволяет любому IP-адресу взаимодействовать с сервером через порты, указанные в директиве firewall_myservices.
После добавления этих строк сохраните файл и закройте редактор (нажмите CTRL+C, наберите exit, а затем нажмите Enter).

Затем запустите сервис брандмауэра ipfw с помощью следующей команды:

Код:
sudo service ipfw start

Настроив брандмауэр, вы можете запустить Certbot и получить сертификаты.

3: Получение SSL-сертификата​

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

Код:
sudo 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, вы можете перейти к заключительному этапу – настройке автоматического обновления сертификатов.

4: Автоматическое обновление сертификатов Certbot​

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

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

Код:
sudo certbot renew --dry-run

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

Код:
sudo crontab -e

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

Код:
0 0,12 * * * /usr/local/bin/certbot renew

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

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