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

Серия RHCE: реализация HTTPS через TLS с использованием службы сетевой безопасности (NSS) для Apache. Часть 8


Если вы системный администратор, отвечающий за обслуживание и безопасность веб-сервера, вы не можете позволить себе не приложить все усилия для обеспечения постоянной защиты данных, обслуживаемых или проходящих через ваш сервер.

Чтобы обеспечить более безопасную связь между веб-клиентами и серверами, был создан протокол HTTPS как комбинация HTTP и SSL ( Secure Sockets Layer) или, в последнее время, TLS (Transport Layer Security).

Из-за некоторых серьезных нарушений безопасности протокол SSL устарел в пользу более надежного TLS. По этой причине в этой статье мы объясним, как защитить соединения между вашим веб-сервером и клиентами с помощью TLS.

В этом руководстве предполагается, что вы уже установили и настроили веб-сервер Apache. Если нет, пожалуйста, обратитесь к следующей статье на этом сайте, прежде чем продолжить.

  1. Установите LAMP (Linux, MySQL/MariaDB, Apache и PHP) на RHEL/CentOS 7.

Установка OpenSSL и утилит

Прежде всего убедитесь, что Apache запущен и что http и https разрешены через брандмауэр:


systemctl start http
systemctl enable http
firewall-cmd --permanent –-add-service=http
firewall-cmd --permanent –-add-service=https

Затем установите необходимые пакеты:


yum update && yum install openssl mod_nss crypto-utils

Важно! Обратите внимание: вы можете заменить mod_nss на mod_ssl в приведенной выше команде, если хотите использовать Библиотеки OpenSSL вместо NSS (Служба сетевой безопасности) для реализации TLS (какой из них использовать, полностью зависит от вас , но в этой статье мы будем использовать NSS, поскольку он более надежен; например, он поддерживает последние стандарты криптографии, такие как PKCS #11).

Наконец, удалите mod_ssl, если вы решили использовать mod_nss, или наоборот.


yum remove mod_ssl

Настройка NSS (службы сетевой безопасности)

После установки mod_nss его файл конфигурации по умолчанию создается как /etc/httpd/conf.d/nss.conf. Затем вам следует убедиться, что все директивы Listen и VirtualHost указывают на порт 443 (порт по умолчанию для HTTPS):


Listen 443
VirtualHost _default_:443

Затем перезапустите Apache и проверьте, загружен ли модуль mod_nss:


apachectl restart
httpd -M | grep nss

Далее необходимо внести следующие изменения в файл конфигурации /etc/httpd/conf.d/nss.conf:

1. Укажите каталог базы данных NSS. Вы можете использовать каталог по умолчанию или создать новый. В этом уроке мы будем использовать значение по умолчанию:


NSSCertificateDatabase /etc/httpd/alias

2. Избегайте ручного ввода парольной фразы при каждом запуске системы, сохраняя пароль в каталоге базы данных в /etc/httpd/nss-db-password.conf:


NSSPassPhraseDialog file:/etc/httpd/nss-db-password.conf

Где /etc/httpd/nss-db-password.conf содержит ТОЛЬКО следующую строку, а mypassword — это пароль, который вы установите позже для базы данных NSS:


internal:mypassword

Кроме того, его разрешения и право собственности должны быть установлены на 0640 и root:apache соответственно:


chmod 640 /etc/httpd/nss-db-password.conf
chgrp apache /etc/httpd/nss-db-password.conf

3. Red Hat рекомендует отключить SSL и все версии TLS до TLSv1.0 из-за TLSv1.0 из-за TLS. >POODLE SSLv3 уязвимость (подробнее здесь).

Убедитесь, что каждый экземпляр директивы NSSProtocol выглядит следующим образом (скорее всего, вы найдете только один, если у вас нет других виртуальных хостов):


NSSProtocol TLSv1.0,TLSv1.1

4. Apache откажется перезапускаться, поскольку это самозаверяющий сертификат, и его выдавший сертификат не распознается как действительный. По этой причине в данном конкретном случае вам придется добавить:


NSSEnforceValidCerts off

5. Хотя это и не является строго обязательным, важно установить пароль для базы данных NSS:


certutil -W -d /etc/httpd/alias