Apache HTTP все еще является лидером на рынке веб-серверов среди миллиона самых нагруженных сайтов.
Очевидно, что показатели Nginx постепенно растут, поэтому, если вы администрируете систему/веб-сеть/связующее программное обеспечение, то вы должны одинаково хорошо знать веб-серверы Apache и Nginx.
Однако, в этой статье я рассмотрю только Apache Web Server.
После установки SSL-сертификата настроенный домен/IP будут доступны через HTTPS. Давайте приступим.
Мы сделаем следующее:
- скомпилируем Apache HTTP 2.4.5 с модулем SSL;
- получим SSL-сертификат;
- настроим Apache для поддержки SSL.
Установка Apache с SSL из исходника
Для настройки SSL Apache HTTP должен быть скомпилирован с mod_ssl. Я буду использовать виртуальную машину с CentOS 7 от DigitalOcean для демонстрации.
- войдем на сервер Linux с правами root и загрузим последнюю версию Apache
wget http://www-us.apache.org/dist//httpd/httpd-2.4.25.tar.gz .
- извлечем с помощью команды gunzip
gunzip -c httpd-2.4.25.tar.gz | tar xvf -
- у вас появится новая папка “httpd-2.4.25”
- войдите внутрь и выполните следующую команду конфигурации
./configure --enable-ssl –-enable-so
Примечание: Если вы делаете это на новом сервере, то можете столкнуться с некоторыми проблемами, связанными с APR, PCRE и OpenSSL и в этом случае можете обратиться к руководству по поиску и устранению неполадок.
Убедитесь, что вы не получили сообщения об ошибке после выполнения команды конфигурации и затем осуществите установку с помощью команды make.
make
make install
Убедитесь, что не допустили ошибок при выполнении команд. Итак, вы установили веб-сервер Apache с поддержкой SSL-сертификата.
Получение SSL-сертификата
Существует несколько способов генерации и получения SSL-сертификата, подписанного центром сертификации.
Если вы хотите установить SSL-сертификат для веб-сервера в локальной сети, то большинство организаций имеет собственные центры для выдачи сертификатов и вам нужно лишь связаться с ними.
Но вам все же необходим CSR (Certificate Signing Request), и вы можете сгенерировать его с помощью OpenSSL.
Однако, если вы ищете безопасный интернет адрес (URL), то можете купить сертификат у VeriSign, GoDaddy, Namecheap и других компаний или же получить бесплатный сертификат от Let's Encrypt.
Let’s Encrypt это проект Linux Foundation, позволяющий выпускать бесплатные SSL/TLS сетрификаты. Я буду использовать Let's Encrypt, чтобы получить сертификат для моего домена — Chandan.io.
Есть несколько способов сгенерировать CSR, но наиболее легкий из тех, что я обнаружил – использовать онлайн инструмент “SSL For FREE”.
Введите URL-адрес, который вы хотите защитить.
Подтвердите право собственности на домен одним из указанных методов и скачайте сертификат для вашего домена.
Вы получите три файла, которые в дальнейшем мы будем использовать для настройки веб-сервера Apache:
- key — это ваш файл с ключом, к которому никто посторонний не должен иметь доступ;
- certificate – действующий SSL-сертификат для вашего домена;
- ca_bundle – цепочка сертификатов (корневой и промежуточные).
Перенесите загруженные файлы на веб-сервер. Нам они скоро понадобятся.
Конфигурация Apache SSL
Последний шаг – настройка Apache таким образом, чтобы он мог обслуживать поступающие запросы через HTTPS:
- войдите на сервер Apache
- сделайте резервную копию файла httpd.conf (по умолчанию находится в /usr/local/apache2/conf/)
- откройте файл в текстовом редакторе (например, в vi) и убедитесь в том, что модуль mod_ssl и httpd-ssl.conf существуют и не закомментированы.
LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
Мы будем использовать файл httpd-ssl.conf для настройки деталей сертификата. Далее – вы должны убедиться, что он имеет правильные параметры.
- SSLCertificateFile – путь к сертификату CRT, загруженному ранее
- SSLCertificateKeyFile – путь к файлу приватного ключа
- SSLCertificateChainFile – путь к файлу ca_bundle.crt
Совет: вы можете создать новую папку под названием «ssl» и сохранить в ней все файлы, связанные с сертификатом.
- Сделайте резервную копию, если требуется, и внесите следующие изменения.
SSLCertificateFile "/usr/local/apache2/conf/ssl/certificate.crt"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl/private.key" - Далее вам нужно настроить директиву «ServerName». Обычно, это имя вашего домена/URL-адрес.
ServerName chandan.io
- Сохраните файл и перезапустите веб-сервер Apache.
cd /usr/local/apache2/bin ./apachectl stop ./apachectl start
Наконец, вы должны убедиться, что ваш домен указывает на вновь настроенный IP-адрес веб-сервера. Затем попробуйте получить доступ к вашему домену с помощью https.
Как вы можете видеть, Chandan.io доступен через https при помощи сертификата, который я настроил.
Описанные шаги необходимы для установки SSL-сертификата, а вы можете настраивать SSL дальше для укрепления защиты так, как я объяснил это здесь.
Перед запуском я бы посоветовал протестировать SSL/TLS и убедиться, что он не подвержен распространенным уязвимостям.
Я надеюсь, что этот обзор даст вам представление о том, как реализовать SSL-сертификат на вашем веб-сервере Apache так, чтобы URL-адрес был доступен через HTTPS.
Если вы только начинаете осваивать веб-сервер Apache, я бы рекомендовал вам воспользоваться этим онлайн-курсом.