Серия RHCE: реализация HTTPS через TLS с использованием службы сетевой безопасности (NSS) для Apache. Часть 8
Если вы системный администратор, отвечающий за обслуживание и безопасность веб-сервера, вы не можете позволить себе не приложить все усилия для обеспечения постоянной защиты данных, обслуживаемых или проходящих через ваш сервер.
Чтобы обеспечить более безопасную связь между веб-клиентами и серверами, был создан протокол HTTPS как комбинация HTTP и SSL ( Secure Sockets Layer) или, в последнее время, TLS (Transport Layer Security).
Из-за некоторых серьезных нарушений безопасности протокол SSL устарел в пользу более надежного TLS. По этой причине в этой статье мы объясним, как защитить соединения между вашим веб-сервером и клиентами с помощью TLS.
В этом руководстве предполагается, что вы уже установили и настроили веб-сервер Apache. Если нет, пожалуйста, обратитесь к следующей статье на этом сайте, прежде чем продолжить.
- Установите 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