Установка приложения Let's Encrypt (py311-certbot)
Установить можно либо из портов
bsd$ cd /usr/ports/security/py-certbot && sudo make install clean
Либо из пакетов
bsd$ sudo pkg install -y py311-certbot
По окончании установки появится подсказка, как запланировать еженедельную проверку необходимости продления срока действия сертификата
bsd$ echo 'weekly_certbot_enable="YES"' | sudo tee -a /etc/periodic.conf
Установка ключей
bsd$ sudo certbot certonly --standalone
Они будут доступны в директории соответствующего доменного имени
bsd$ sudo ls -l /usr/local/etc/letsencrypt/live/stecs.ru/
lrwxr-xr-x 1 root wheel 32 Jul 8 12:18 cert.pem -> ../../archive/stecs.ru/cert1.pem
lrwxr-xr-x 1 root wheel 33 Jul 8 12:18 chain.pem -> ../../archive/stecs.ru/chain1.pem
lrwxr-xr-x 1 root wheel 37 Jul 8 12:18 fullchain.pem -> ../../archive/stecs.ru/fullchain1.pem
lrwxr-xr-x 1 root wheel 35 Jul 8 12:18 privkey.pem -> ../../archive/stecs.ru/privkey1.pem
https://certbot.eff.org/instructions?ws=other&os=freebsd
Настройка HTTP-сервера apache24
Внести соответствующие изменения в конфигурационный файл httpd.conf
bsd$ cat module /usr/local/etc/apache24/httpd.conf
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule rewrite_module libexec/apache24/mod_rewrite.so
....
Include etc/apache24/extra/httpd-ssl.conf
Include etc/apache24/extra/httpd-vhosts.conf
....
# <IfModule ssl_module>
#
#
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
# </IfModule>
Удалить записи всех виртуальных хостов в файле /usr/local/etc/apache24/extra/httpd-ssl.conf и указать свои в /usr/local/etc/apache24/extra/httpd-vhosts.conf
bsd$ cat /usr/local/etc/apache24/extra/httpd-vhosts.conf
<VirtualHost *:443>
DocumentRoot "/usr/local/www/apache24/data"
ServerName apache24
ErrorLog "/var/log/apache24-error_log"
CustomLog "/var/log/apache24-access_log" common
SSLEngine on
SSLCertificateFile /usr/local/etc/letsencrypt/live/stecs.ru/cert.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/stecs.ru/privkey.pem
SSLCertificateChainFile /usr/local/etc/letsencrypt/live/stecs.ru/chain.pem
</VirtualHost>
<VirtualHost *:80>
ServerName apache24
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
HTTP-сервер должен быть скомпилирован с поддержкой SSL (HTTP2=on, SSL=on)
Выяснить, поддерживает ли сервер ssl, можно, подключившись через telnet на порт HTTP
bsd$ telnet localhost 80
bsd$ HEAD
HTTP/1.1 400 Bad Request
Server: Apache/2.4.68 (FreeBSD) OpenSSL/3.0.15 PHP/8.2.31
Либо запросить у HTTP-сервера данные сертификатов
bsd$ openssl s_client -connect stecs.ru:443 -servername stecs.ru -showcerts