Как настроить Apache HTTP с SSL-сертификатом

в 17:11, , рубрики: Apache, SSL, TLS, Администрирование доменных имен, Блог компании Поиск VPS, информационная безопасность, системное администрирование

Как настроить Apache HTTP с SSL-сертификатом - 1

Apache HTTP все еще является лидером на рынке веб-серверов среди миллиона самых нагруженных сайтов.

Очевидно, что показатели Nginx постепенно растут, поэтому, если вы администрируете систему/веб-сеть/связующее программное обеспечение, то вы должны одинаково хорошо знать веб-серверы Apache и Nginx.

Однако, в этой статье я рассмотрю только Apache Web Server.

Как настроить Apache HTTP с SSL-сертификатом - 2

После установки 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 HTTP с SSL-сертификатом - 3

Подтвердите право собственности на домен одним из указанных методов и скачайте сертификат для вашего домена.

Как настроить Apache HTTP с SSL-сертификатом - 4

Вы получите три файла, которые в дальнейшем мы будем использовать для настройки веб-сервера Apache:

  1. key — это ваш файл с ключом, к которому никто посторонний не должен иметь доступ;
  2. certificate – действующий SSL-сертификат для вашего домена;
  3. 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 для настройки деталей сертификата. Далее – вы должны убедиться, что он имеет правильные параметры.

  1. SSLCertificateFile – путь к сертификату CRT, загруженному ранее
  2. SSLCertificateKeyFile – путь к файлу приватного ключа
  3. 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.

Как настроить Apache HTTP с SSL-сертификатом - 5

Как вы можете видеть, Chandan.io доступен через https при помощи сертификата, который я настроил.

Описанные шаги необходимы для установки SSL-сертификата, а вы можете настраивать SSL дальше для укрепления защиты так, как я объяснил это здесь.

Перед запуском я бы посоветовал протестировать SSL/TLS и убедиться, что он не подвержен распространенным уязвимостям.

Я надеюсь, что этот обзор даст вам представление о том, как реализовать SSL-сертификат на вашем веб-сервере Apache так, чтобы URL-адрес был доступен через HTTPS.

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

Автор: Вера

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js