Быстро, доступно, безопасно!
Магазин готовых сайтов

Установка SSL сертификата на FreeBSD

Для работы по безопасному протоколу HTTPS потребуется SSL- сертификат, подписанный общепризнанным Центром Сертификации. Используем ЦС Let’s Encrypt.

Настройка сервера на FreeBSD 14.x -> SSL сертификаты

Для автоматизации выпуска и установки сертификата потребуется ACME-клиент Certbot.

Устанавливаем Certbot: pkg install py39-certbot

Важно! Перед тем, как сделать запрос на выдачу SSL-сертификата:

  • вносим изменения в конфигурационный файл Apache httpd.conf;
  • создаем в файле vhosts.conf запись для соответствующего виртуального хоста;
  • создаем необходимые директории на виртуальном хосте:

если они ещё не созданы: mkdir -p /home/example/public_html/.well-known/acme-challengeи устанавливаем их владельцем вебсервер Apache, чтобы он мог создавать там файлы, необходимые для подтверждения владения доменом.

Запрашиваем сертификат: certbot certonly --webroot -w /home/example/public_html -d example.com -d www.example.comв случае успешного завершения задачи мы должны получить такой результат: Successfully received certificate.
Certificate is saved at: /usr/local/etc/letsencrypt/live/example.com/fullchain.pem
Key is saved at: /usr/local/etc/letsencrypt/live/example.com/privkey.pem
проверить автоматическое продление: certbot renew --dry-runредактируем файл: /etc/defaults/periodic.confдобавляем в него следующую строку в соответствующий раздел (weekly): weekly_certbot_enable="YES"

Теперь SSL сертификат установлен и его автоматическое продление активировано. Но просто получить новый сертификат недостаточно, надо ещё и перезагрузить веб-сервер Apache, чтобы он начал использовать новый сертификат.

Для этого в специально отведенном каталоге создаем исполняемый скрипт, который будет запускаться после каждого успешного обновления сертификатов: vim /usr/local/etc/letsencrypt/renewal-hooks/deploy/restart_apache.shи добавляем туда следующий код: #!/bin/sh
service apache24 graceful
сохраняем файл и делаем его исполняемым: chmod +x /usr/local/etc/letsencrypt/renewal-hooks/deploy/restart_apache.sh

Теперь система настроена, SSL сертификаты будут автоматически обновляться, а веб-сервер Apache будет плавно перезагружаться с применением новых сертификатов.


Удаление SSL сертификата

Отозвать сертификат: certbot revoke --cert-path /usr/local/etc/letsencrypt/live/example.com/fullchain.pemможет потребоваться удалить файлы относящиеся к "example.com" в следующих директориях: /usr/local/etc/letsencrypt/accounts
/usr/local/etc/letsencrypt/archive
/usr/local/etc/letsencrypt/live
/usr/local/etc/letsencrypt/renewal


Wildcard SSL

Для получения сертификата для домена и любых его поддоменов потребуется установить дополнительное ПО.

Устанавливаем Certbot — программу, которая будет получать и продлевать сертификаты: pkg install py312-certbot

Устанавливаем DNS-плагин RFC 2136 для работы с BIND: pkg install py312-certbot-dns-rfc2136

На сервере NS1 с BIND создаём TSIG-ключ для Certbot: tsig-keygen -a hmac-sha256 acme-key.example.com > /etc/named/keys/acme-key.example.com.key

Чтобы BIND мог читать файл даем группе named соответствующие права: chown root:named /etc/named/keys/acme-key.example.com.key

Ограничиваем доступ к ключу - чтение только для root и группы named: chmod 0640 /etc/named/keys/acme-key.example.com.key

Создаём файл настроек Certbot с адресом NS1 и данными TSIG-ключа для автоматического добавления TXT-записи проверки домена: vim /usr/local/etc/letsencrypt/rfc2136.ini

Содержание файла: dns_rfc2136_server = IP_АДРЕС_NS1
dns_rfc2136_port = 53
dns_rfc2136_name = acme-key.example.com.
dns_rfc2136_secret = СЕКРЕТ_ИЗ_ФАЙЛА_КЛЮЧА
dns_rfc2136_algorithm = HMAC-SHA256

Ограничиваем доступ к файлу с секретом: chmod 600 /usr/local/etc/letsencrypt/rfc2136.ini

Проверяем, может ли Certbot создать TXT-запись через BIND: certbot certonly --dry-run --dns-rfc2136 --dns-rfc2136-credentials /usr/local/etc/letsencrypt/rfc2136.ini -d example.com -d '*.example.com'

Выпускаем настоящий сертификат: certbot certonly --dns-rfc2136 --dns-rfc2136-credentials /usr/local/etc/letsencrypt/rfc2136.ini -d example.com -d '*.example.com'

В файл /etc/periodic.conf добавляем строку для автоматической перезагрузки веб-сервера Apache:weekly_certbot_deploy_hook="/usr/sbin/service apache24 reload"


Метки: ssl

Опрос

Адаптирован ли ваш сайт для смартфонов и планшетов? (голосов: 35)

  • Да - 4 (11%)
  • Нет - 2 (6%)
  • Не знаю - 1 (3%)
  • Нет сайта - 28 (80%)