Поиск по сайту:

Как защитить Apache с помощью SSL и Let’s Encrypt во FreeBSD


В этом руководстве мы узнаем, как защитить сервер Apache HTTP с помощью сертификатов TLS/SSL, предлагаемых Let's Encrypt в FreeBSD 11. х. Мы также расскажем, как автоматизировать процесс обновления сертификата Lets Encrypt.

Читайте также: установите Let’s Encrypt для Nginx на FreeBSD

Сертификаты TLS/SSL используются веб-сервером Apache для шифрования связи между конечными узлами или, что более обычно, между сервером и клиентом для обеспечения безопасности. Let’s Encrypt предоставляет утилиту командной строки certbot, которая представляет собой приложение, упрощающее получение доверенных сертификатов бесплатно.

Требования:

  1. Установка FreeBSD 11.x
  2. 10 вещей, которые нужно сделать после установки FreeBSD
  3. Как установить Apache, MariaDB и PHP во FreeBSD

Шаг 1. Настройте Apache SSL во FreeBSD

1. Прежде чем приступить к установке утилиты certbot и создать файл конфигурации TSL для Apache, сначала создайте два отдельных каталога с именами sites-available и . >включены сайты в корневом каталоге конфигурации Apache, введя приведенные ниже команды.

Цель этих двух каталогов — облегчить управление конфигурацией виртуального хостинга в системе без изменения основного файла конфигурации Apache httpd.conf каждый раз, когда мы добавляем новый виртуальный хост.

mkdir /usr/local/etc/apache24/sites-available
mkdir /usr/local/etc/apache24/sites-enabled

2. После создания обоих каталогов откройте файл Apache httpd.conf в текстовом редакторе и добавьте следующую строку ближе к концу файла, как показано ниже.

nano /usr/local/etc/apache24/httpd.conf

Добавьте следующую строку:

IncludeOptional etc/apache24/sites-enabled/*.conf

3. Затем включите модуль TLS для Apache, создав следующий новый файл с именем 020_mod_ssl.conf в modules.d< каталог со следующим содержимым.

nano /usr/local/etc/apache24/modules.d/020_mod_ssl.conf

Добавьте следующие строки в файл 020_mod_ssl.conf.

Listen 443
SSLProtocol ALL -SSLv2 -SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
SSLPassPhraseDialog  builtin
SSLSessionCacheTimeout  300

4. Теперь раскомментируйте модуль SSL из файла /usr/local/etc/apache24/httpd.conf, удалив хэштег с начала. следующей строки, как показано ниже:

LoadModule ssl_module libexec/apache24/mod_ssl.so

5. Затем создайте файл конфигурации TLS для вашего домена в каталоге sites-available, желательно с именем вашего домена, как представлено в приведенный ниже отрывок:

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Добавьте следующую конфигурацию виртуального хоста в файл bsd.lan-ssl.conf.

<VirtualHost *:443>
    ServerName www.yourdomain.com
	ServerAlias yourdomain.com
                DocumentRoot "/usr/local/www/apache24/data/"
	SSLEngine on

	SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.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 "/var/log/apache/httpd-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 "/var/log/apache/yourdomain.ssl-error.log"
    CustomLog "/var/log/apache/yourdomain.ssl-access_log" combined

</VirtualHost>

Обязательно замените переменную имени домена в операторах ServerName, ServerAlias, ErrorLog, CustomLog соответственно.

Шаг 2. Установите Lets’Encrypt на FreeBSD

6. На следующем этапе введите следующую команду, чтобы установить утилиту certbot, предоставленную Let's Encrypt, которая будет использоваться для получения 6. Strong>Бесплатные сертификаты Apache TSL для вашего домена.

При установке certbot на вашем экране будет отображаться ряд подсказок. Используйте снимок экрана ниже для настройки утилиты certbot. Кроме того, компиляция и установка утилиты certbot может занять некоторое время, в зависимости от ресурсов вашего компьютера.

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

7. После завершения процесса компиляции введите приведенную ниже команду, чтобы обновить утилиту certbot и необходимые зависимости certbot.

pkg install py27-certbot
pkg install py27-acme

8. Чтобы сгенерировать сертификат для вашего домена, введите команду, как показано ниже. Убедитесь, что вы указали правильное корневое местоположение в файловой системе, где хранятся файлы вашего веб-сайта (директива DocumentRoot из файла конфигурации вашего домена), используя флаг -w. Если у вас несколько субдоменов, добавьте их все с помощью флага -d.

certbot certonly --webroot -w /usr/local/www/apache24/data/ -d yourdomain.com -d www.yourdomain.com

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

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel):[email 
There seem to be problems with that address. Enter email address (used for
urgent renewal and security notices)  If you really want to skip this, you can
run the client with --register-unsafely-without-email but make sure you then
backup your account key from /etc/letsencrypt/accounts   (Enter 'c' to cancel):[email 

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf. You must agree
in order to register with the ACME server at
https://acme-v01.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: a ------------------------------------------------------------------------------- Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: n Obtaining a new certificate Performing the following challenges: http-01 challenge for www.domain.com Using the webroot path /usr/local/www/apache24/data 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/www.yourdomain.com/fullchain.pem. Your cert will expire on 2017-11-15. 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" - Your account credentials have been saved in your Certbot configuration directory at /usr/local/etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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

9. После того, как вы получили сертификаты для своего домена, вы можете запустить команду ls, чтобы вывести список всех компонентов сертификата (цепочка, закрытый ключ, сертификат), как показано в примере ниже.

ls -al /usr/local/etc/letsencrypt/live/www.yourdomain.com/

Шаг 3. Обновите сертификаты Apache TLS во FreeBSD

10. Чтобы добавить сертификаты Let’s Encrypt на свой веб-сайт, откройте файл конфигурации Apache для вашего домена и обновите следующие строки, чтобы отразить путь к выданным сертификатам.

nano /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf

Добавьте эти строки сертификата TLS:

SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/cert.pem"
	SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/privkey.pem"
	SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/www.yourdomain.com/fullchain.pem"

11. Наконец, включите файл конфигурации TLS, создав символическую ссылку для файла конфигурации TLS вашего домена на каталог sites-enabled, проверьте конфигурации Apache на наличие возможных синтаксических ошибок и, если синтаксис в порядке, перезапустите демон Apache, введя приведенные ниже команды.

ln -sf /usr/local/etc/apache24/sites-available/bsd.lan-ssl.conf /usr/local/etc/apache24/sites-enabled/
apachectl -t
service apache24 restart

12. Чтобы проверить, прослушивает ли служба Apache порт HTTPS 443, введите следующую команду для получения списка сетевых сокетов httpd.

sockstat -4 | grep httpd

13. Вы можете перейти к адресу своего домена из браузера по протоколу HTTPS, чтобы убедиться, что сертификаты Let’s Encrypt успешно применены.

https://www.yourdomain.com

14. Чтобы получить дополнительную информацию о выданном сертификате Let’s Encrypt из командной строки, используйте команду openssl следующим образом.

openssl s_client -connect www.yourdomain.com:443

15. Вы также можете проверить, зашифрован ли трафик, с помощью действующего сертификата, предоставленного Let’s Encrypt CA, с мобильного устройства, как показано на снимке экрана мобильного устройства ниже.

Вот и все! Теперь клиенты могут безопасно посещать ваш веб-сайт, поскольку трафик, проходящий между сервером и браузером клиента, зашифрован. Для более сложных задач, связанных с утилитой certbot, посетите следующую ссылку: https://certbot.eff.org/