Установка 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%)

