Начнем с того что что Apache24 у вас уже установлен и настроен. Если это не так посмотрите статью FreeBSD+Apache24+Drupal8.
Перед тем как переходить к самой настройке веб сервера и получения ssl сертификата, нам нужно установить certbot
# pkg install py27-certbot
или
# cd /usr/ports/security/py-certbot && make install clean
# cd /usr/ports/security/py-certbot-apache && make install clean
Затем стопарнем Apache24 что бы настроить для коректной работы ssl сертификатов от Lets Encrypt
# /usr/local/etc/rc.d/apache24 stop
Установим OpenSSL
# /usr/ports/security/openssl
Раскомментируем или просто добавим такие строчки в конфигурационном файле Apache24
# ee /usr/local/etc/apache24/httpd.conf
LoadModule log_config_module libexec/apache24/mod_log_config.so
LoadModule setenvif_module libexec/apache24/mod_setenvif.so
LoadModule ssl_module libexec/apache24/mod_ssl.so
LoadModule socache_shmcb_module libexec/apache24/mod_socache_shmcb.so
Include etc/apache24/extra/httpd-ssl.conf
И редактируем конфигурационный файл до такого состояния
# ee /usr/local/etc/apache24/extra/httpd-ssl.conf
Listen 443
SSLCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA
SSLProxyCipherSuite HIGH:MEDIUM:!SSLv3:!kRSA
SSLHonorCipherOrder on
#TLS 1.2 Only
SSLProtocol TLSv1.2
SSLProxyProtocol TLSv1.2
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:/var/run/ssl_scache(512000)"
SSLSessionCacheTimeout 300
Приступаем к созданию самоподписанного сертификата SSL / TLS. Это можно сделать с помощью команды openssl.
#openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/apache24/server.key -out /usr/local/etc/apache24/server.crt -days 3650 #с паролем
тогда при старте Apache24 будет запрошен пароль
Enter PEM pass phrase:
Или создадим сертификат без пароля.
#openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /usr/local/etc/apache24/server.key -out /usr/local/etc/apache24/server.crt -days 3650
Теперь можно и стартануть Apache24
# /usr/local/etc/rc.d/apache24 start
И получим ssl сертификат на примере моего сайта.
# certbot certonly --webroot -w /usr/local/www/apache24/data/ussrkievua -d ussr.kiev.ua -d www.ussr.kiev.ua -m ussr@ussr.kiev.ua
# cd /usr/ports/security/py-certbot-apache
# make install clean
# certbot --apache -d server.olymp-travel.kiev.ua
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ussr.kiev.ua
http-01 challenge for www.ussr.kiev.ua
Using the webroot path /usr/local/www/apache24/data/ussrkievua for all unmatched domains.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/ussr.kiev.ua/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/ussr.kiev.ua/privkey.pem
Your cert will expire on 2019-02-25. 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"
- 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
Вот последний штрих добавим виртуал хост, и укажем где лежат ssl сертификаты
# ee /usr/local/etc/apache24/extra/httpd-ssl.conf
<VirtualHost *:443>
ServerName ussr.kiev.ua:443
ServerAlias www.ussr.kiev.ua
DocumentRoot "/usr/local/www/apache24/data/ussrkievua"
ServerAdmin ussr@ussr.kiev.ua
SSLEngine on
SSLCertificateFile "/usr/local/etc/letsencrypt/live/ussr.kiev.ua/fullchain.pem"
SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/ussr.kiev.ua/privkey.pem"
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/usr/local/www/apache24/cgi-bin">
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog "/usr/local/www/apache24/data/ussrkievua/logs/ussrkievua-ssl_request.log" \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
<Directory "/usr/local/www/apache24/data/">
Options Indexes FollowSymLinks MultiViews
#AllowOverride controls what directives may be placed in .htaccess files.
AllowOverride All
#Controls who can get stuff from this server file
Require all granted
</Directory>
ErrorLog "/usr/local/www/apache24/data/ussrkievua/logs/ussrkievua.ssl-error.log"
CustomLog "/usr/local/www/apache24/data/ussrkievua/logs/ussrkievua.ssl-access_log" combined
</VirtualHost>
Ребутнем Apache24
# /usr/local/etc/rc.d/apache24 restart
Пробуем зайти через https://ussr.kiev.ua
Коментувати