Устанавливаем и настраиваем certbot на FreeBSD

Print Friendly, PDF & Email

Задача:

Получить SSL-сертификат при помощи Certbot для использовать на сервере FreeBSD 11.2 для защиты трафика веб-сервера из связки apache 2.4 и nginx 1.14.2. Также настроим автоматическое обновление сертификатов.

---------------------------------------------------------------

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

В нашей схеме первым на запросы отвечает nginx, затем он уже перенаправляет запрос на apache. И так как этот запрос идёт внутри сервера, то достаточно настроить один только nginx, несмотря на то что трафик внутри сервера идёт по незащищённому каналу (в proxy_pass ссылка прописана как http)

Для начала скачиваем сжатый снэпшот коллекции портов в/var/db/portsnap

portsnap fetch 

Далее извлекаем снэпшот в /usr/ports соответствующей командой

portsnap extract

Если ранее снэпшот уже извлекался, то достаточно только обновить при помощи:

portsnap update

Устанавливаем certbot. Теперь переходим, непосредственно к установке самого бота

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

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

make install clean

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

Если при установке, вы не столкнулись с проблемами, то должны увидеть следующую информацию

Теперь собираем плагин nginx для Certbot, который будем использовать для получения SSL-сертификатов

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

Нажимаем ок

Нажимаем ок

Окончание установки Certbot

Если вы увидели такое окошко, значит с установкой всё в полном порядке. Теперь нам необходимо убедится, что сервер поддерживает доступ по HTTPS (порт 443). Для этого открываем на редактирование файл rc.conf :

sudo ee /etc/rc.conf

И вписываем в самом конце

firewall_enable="YES"
firewall_type="workstation"
firewall_myservices="22 80 443"
firewall_allowservices="any"

Немного прокомментирую:

firewall_type – задает тип файрвола, разработчики FreeBSD предлагают несколько типов:

  • open – разрешает доступ всем
  • client – будет пытаться защитить только эту машину
  • simple – будет защищать всю сеть
  • closed – не пропускать никакой трафик
  • workstation – будет пытаться защитить только эту машину, используя statefull firewalling
  • filename – загрузить правила из данного файла

firewall_allowservices =any – позволяет любому IP-адресу взаимодействовать с сервером через порты, указанные в firewall_myservices.

Если фаервол настроили, запускаем ipfw с помощью следующей команды:

service ipfw start

Теперь переходим к получению SSL-сертификата, на примере osbsd.com:

certbot --nginx -d osbsd.com -d www.osbsd.com

Указываем почтовый ящик

Соглашаемся с лицензией.

Соглашаемся предоставить свой почтовый ящик компании Electronic Frontier Foundation, партнером-основателем проекта Let’s Encrypt и некоммерческой организацией, которая разрабатывает Certbot. И так сертификат бесплатный, не наглейте уж )

Скрипт может автоматически настроить редирект на HTTPS. Для эксперимента я выбрал автоматическую конфигурацию, отработал корректно, но советую конфиги проверить

Если вы дошли до этого окна, значит у вас всё получилось

Перезапускаем nginx

service nginx reload

Если при перезапуске ошибок не выдало, заходим на сайт и проверяем

Теперь нам необходимо настроить автоматическое обновление, так как сертификаты Let’s Encrypt действительны только в течение девяноста дней. Прежде чем настроить автоматическое обновление, важно убедиться, что вы можете правильно обновлять сертификаты.

Запускаем процесс обновления командой:

certbot renew --dry-run

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

crontab -e

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

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

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

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *