Как установить Apache с mod_ssl & mod_http2 в CentOS 8 / RHEL 8

Как установить Apache с mod_ssl & mod_http2 в CentOS 8 / RHEL 8

 

Вопросы : Как установить Apache на RHEL 8 / CentOS 8 ?, как установить mod_ssl на RHEL 8 / CentOS 8 ?, как установить mod_http2 на RHEL 8 / CentOS 8 ?. В этом посте будет рассказано, как установить веб-сервер Apache с помощью mod_ssl & mod_http2. Apache — это веб-сервер с открытым исходным кодом, разработанный Apache Software Foundation . Веб-сервер (HTTP-сервер) — это сетевая служба, используемая для предоставления контента клиенту через Интернет через гипертекстовый транспортный протокол  ( HTTP ).

В Red Hat Enterprise 8 (RHEL 8) сервер Apache HTTP обновлен до версии 2.4.33 со следующими новыми функциями.

  • Предварительно сконфигурированный модуль мультиобработки (MPM)
  • Минимальные UID и GID, разрешенные для пользователей с помощью suexec, теперь равны 1000 и 500 соответственно (RHEL 7 httpd использовал 100 и 100).
  • /etc/sysconfig/httpd больше не поддерживается интерфейс для установки переменных среды для  httpd службы
  • HTTP / 2 теперь поддерживается через mod_http2пакет.
  • Добавлены новые модули — mod_proxy_uswsgi , mod_proxy_hcheck , mod_proxy_fdpass , mod_cache_socache и mod_md .
  • Новый подпакет  httpd-filesystem владеющий каталогами.
  • новый httpd-init.service Заменяет %post script в Создайте самозаверяющими mod_sslпара ключей.
  • mod_auth_kerbМодуль был заменен mod_auth_gssapi модулем

Установка Apache на RHEL 8 / CentOS 8

Пакет веб-сервера Apache в RHEL 8 называется httpd. Этот пакет и его инструменты распространяются через репозиторий Application Stream. Установите модуль httpd на RHEL 8 с помощью команды.

$ sudo yum install @httpd
 Updating Subscription Management repositories.
 Updating Subscription Management repositories.
 Last metadata expiration check: 0:43:01 ago on Sat 29 Dec 2018 09:52:44 AM EAT.
 Dependencies resolved.
  Package                        Arch               Version                                     Repository                                         Size
 Installing group/module packages:
  httpd                          x86_64             2.4.35-6.el8+2089+57a79027                  rhel-8-for-x86_64-appstream-beta-rpms             1.4 M
  httpd-filesystem               noarch             2.4.35-6.el8+2089+57a79027                  rhel-8-for-x86_64-appstream-beta-rpms              32 k
  httpd-tools                    x86_64             2.4.35-6.el8+2089+57a79027                  rhel-8-for-x86_64-appstream-beta-rpms              99 k
  mod_ssl                        x86_64             1:2.4.35-6.el8+2089+57a79027                rhel-8-for-x86_64-appstream-beta-rpms             127 k
  mod_http2                      x86_64             1.11.3-1.el8+2087+db8dc917                  rhel-8-for-x86_64-appstream-beta-rpms             156 k
 Installing dependencies:
  apr                            x86_64             1.6.3-8.el8                                 rhel-8-for-x86_64-appstream-beta-rpms             125 k
  apr-util                       x86_64             1.6.1-6.el8                                 rhel-8-for-x86_64-appstream-beta-rpms             105 k
  redhat-logos-httpd             noarch             80.5-1.el8                                  rhel-8-for-x86_64-baseos-beta-rpms                 24 k
 Installing weak dependencies:
  apr-util-bdb                   x86_64             1.6.1-6.el8                                 rhel-8-for-x86_64-appstream-beta-rpms              25 k
  apr-util-openssl               x86_64             1.6.1-6.el8                                 rhel-8-for-x86_64-appstream-beta-rpms              27 k
 Installing module profiles:
  httpd/default                                                                                                                                        
 Enabling module streams:
  httpd                                             2.4                                                                                                
 Transaction Summary
 Install  10 Packages
 Total download size: 2.1 M
 Installed size: 5.7 M
 Is this ok [y/N]: y

Это установит следующие пакеты httpd.

  • httpd : Apache HTTPWeb Сервер.
  • httpd-файловая система : содержит базовую структуру каталогов для HTTP-сервера Apache, включая правильные разрешения для каталогов.
  • httpd-tools : содержит инструменты, которые можно использовать с HTTP-сервером Apache
  • mod_http2 : модуль Apache httpd, который реализует протокол HTTP2 (h2 + h2c) поверх libnghttp2 для серверов httpd 2.4.
  • mod_ssl : обеспечивает надежную криптографию для веб-сервера Apache по протоколам Secure Sockets Layer (SSL) и Transport Layer Security (TLS).
  • и другие необходимые зависимости — апрель *

httpdСлужбы по умолчанию, считывает конфигурацию из следующих мест.

  • /etc/httpd/conf/httpd.conf — это основной файл конфигурации httpd.
  • /etc/httpd/conf.d/ — это вспомогательный каталог для файлов конфигурации, которые включены в основной файл конфигурации. Вы можете разместить конфигурационные файлы, такие как VirtualHosts, в этом каталоге.
  • /etc/httpd/conf.modules.d/ — содержит файлы конфигурации, которые загружают динамические модули, упакованные в RHEL. Файлы конфигурации в этом каталоге обрабатываются в первую очередь.
  • / usr / lib64 / httpd / modules / — каталог с модулями httpd.

Управление сервисом httpd в RHEL 8 / CentOS 8

В этом разделе описывается, как управлять состояниями службы Apache HTTP — запускать , останавливать , перезапускать и проверять текущее состояние.

Запуск службы httpd:

sudo systemctl start httpd.service

Используйте команду ниже, чтобы включить автоматический запуск службы httpd во время загрузки:

sudo systemctl enable httpd.service

Для запуска и включения службы во время загрузки можно использовать одну приведенную ниже команду.

sudo systemctl enable --now httpd.service

Убедитесь, что служба настроена на запуск при загрузке.

$ sudo systemctl is-enabled  httpd.service
enabled

Остановка службы httpd

Чтобы остановить работающую  httpdслужбу, введите следующую команду:

sudo systemctl stop httpd.service

Чтобы предотвратить автоматический запуск службы во время загрузки, введите:

sudo systemctl disable httpd.service

Перезапуск службы httpd

Существует два варианта перезапуска службы httpd.

1. Остановите запущенную службу httpd и сразу же запустите ее снова — полезно после установки или удаления динамически загружаемого модуля, такого как PHP.

sudo systemctl restart httpd.service

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

sudo systemctl reload httpd.service

Чтобы проверить конфигурацию на возможные ошибки, введите:

$ sudo apachectl configtest
Syntax OK

Если в файлах конфигурации нет ошибки, вы должны получить Syntax OK.

Загрузка модуля SSL

Мы установили mod_sslмодуль, но вы должны загрузить модуль с LoadModuleдирективой, прежде чем использовать его.

Чтобы загрузить Загрузка DSO mod_ssl, добавьте строку ниже в конце httpd.conf файла конфигурации.

LoadModule ssl_module modules/mod_ssl.so

Смотрите скриншот ниже.

Перезапустите веб-сервер после загрузки модуля, чтобы перезагрузить конфигурацию.

sudo systemctl restart httpd

Конфигурация SSL по умолчанию файл /etc/httpd/conf.d/ssl.conf, вы можете за пример отключитьSSL версии 2 и SSL версии 3 путем изменения SSLProtocolдирективы в этом файле.

SSLProtocol all -SSLv2 -SSLv3

Внизу строки будут отключены все протоколы SSL и TLS, кроме TLS 1 и выше.

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

Перезапустите демон Apache после внесения изменений.

sudo systemctl restart httpd

Чтобы проверить, какие версии SSL и TLS включены или отключены, вы можете использовать команду openssl s_client -connect .openssl s_client -connect hostname: port -protocol

openssl s_client -connect <hostname>:<port> -<protocol>

Протокол может быть и -ssl2, -ssl3,-tls1,-tls1_1,-tls1_2

Смотрите пример ниже.

# Test if SSLv3 is enabled
$ openssl s_client -connect localhost:443 -ssl3

# Test if TLSv1.2 is enable

$ openssl s_client -connect localhost:443 -tls1_2

Пример вывода.

# openssl s_client -connect localhost:443 -tls1_2

CONNECTED(00000004)
depth=1 C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email protected]
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
 0 s:C = US, O = Unspecified, CN = rhel8.local, emailAddress = [email protected]
   i:C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email protected]
 1 s:C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email protected]
   i:C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email protected]
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIErTCCApWgAwIBAgIIfoNXRr0/654wDQYJKoZIhvcNAQELBQAwezELMAkGA1UE
BhMCVVMxFDASBgNVBAoMC1Vuc3BlY2lmaWVkMR8wHQYDVQQLDBZjYS00Njg4ODcx
MzkxMDI4MTY0NjA3MRQwEgYDVQQDDAtyaGVsOC5sb2NhbDEfMB0GCSqGSIb3DQEJ
ARYQcm9vdEByaGVsOC5sb2NhbDAeFw0xODEyMjkwNzQ3NDFaFw0yMDAxMDMwOTI3
NDFaMFoxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtVbnNwZWNpZmllZDEUMBIGA1UE
AwwLcmhlbDgubG9jYWwxHzAdBgkqhkiG9w0BCQEWEHJvb3RAcmhlbDgubG9jYWww
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCXG/tlwvg8jf7Aa+rBXt8
V0ZV5krqXnkF3N2xccKjJLKRY6psny0rdaf7qNF9fjNPTNmP6PdqSvpxvhG0gjoV
lo0PU79M7sq74esx8A+UdSqPkqDfnrszBthb+PYBj0yQu88/0aS6GIPWbeWF235Z
uRIAYdin92ZmcXqsafX1qGlErgZN+UrisrVPZFgM2rKWMnuIxOmSeqwdsrHGIlv2
lROipNxEosqqqBXAVS3VX7Q8yMaGT3GgU6Nf8TbT84lnMDsYj4bgtlh1Ry+ck8jA
muN3rujvgCsTWQ1v4s4m5/p/iq3aGFOyIq8z2qdCA24leYhSXpPrFqkKXIr7UkTt
AgMBAAGjVjBUMA4GA1UdDwEB/wQEAwIFoDAJBgNVHRMEAjAAMBYGA1UdEQQPMA2C
C3JoZWw4LmxvY2FsMB8GA1UdIwQYMBaAFOwi+L9TpxZTDY3TYF29uCq5mW7MMA0G
CSqGSIb3DQEBCwUAA4ICAQAWgBjsNHhcI9dAAs1cuhmox6j7EYS2nGDe+BVlMdtE
TVBbSfUV27L+9G3NF9XMOjrUmX67mBqEsGwLiyUaDSFS8JgcJ1zw0V2Q0k8PLgnB
uGKOwkKvPWGPtB2GGJCTBbp0WCByPNsufyIG8+7GHov0StG6s8nYUSSjHHQcZpx4
2BybuLmGt6GvSgN+TMPJl5mApPHNdpUrrf8DWyyP2yAgoB6/XSy3rafBP+1WE38C
s+iHgFoTH05iFtPtMVF1/oLVA4jDfU0T4thqoHFLNwAWYPts6dOgOwT9rZe8e0Ft
bXCd4PJ+3RZHB+JV+IPVF6nF+GVXxr0jT/Fu6+15dHVWbdZUWzscdSV8lae0vyhp
jQRgUdISqbVhmWt1ruRTgZ443fj6NgrFeht0X3pS1WnHyxMT3Aj6nAZnInlZoaX0
xNdPE31ZsgWn6yoFXVEWlVs50xZ+31V+2/LDLQiqVYMRoid1uRZxAp4X80AMUfqc
v4g3/ebLhLsdStCVT7YASrJ/a8fRNNFEJhHOlPaqVsaerBvKrviyjocEQsPzX2cK
oP1RlmDMUoDqFHUo8jIFsWAC2YKe0rsNTSwZTYUHZuc+FzRyKKmpsIrzFMNlgZ3h
evqQPJDRyyB+Nru6mxqSn6L36PbdfYkWOWEDmllnCTAATopYBtmegsYncFRNnEnB
Bg==
-----END CERTIFICATE-----
subject=C = US, O = Unspecified, CN = rhel8.local, emailAddress = [email protected]

issuer=C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email protected]
.......

Директивы для настройки ключа SSL и сертификата:

SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

Настройка брандмауэра

Разрешите порты 80 и 443, если у вас запущена служба firewalld.

$ sudo firewall-cmd --add-service={http,https} --permanent
success
$ sudo firewall-cmd --reload
success
$ firewall-cmd --list-services
cockpit dhcpv6-client http https ssh

 

Загрузка модуля HTTP / 2 — mod_http2

Включить поддержку HTTP / 2, загрузив mod_http2модуль

LoadModule http2_module modules/mod_http2.so

Также добавьте ниже к директиве Протоколов

Protocols h2 h2c http/1.1

Значение параметров директив Протоколов :

  • h2 — указывает Apache на поддержку протокола HTTP / 2 через SSL / TLS
  • h2c — указывает Apache на поддержку HTTP / 2 через TCP
  • http / 1.1 — если клиент не принимает HTTP / 2, затем обрабатывает запрос по HTTP / 1.1

Перезапустите веб-сервер Apache, чтобы выполнить перезагрузку конфигурации.

sudo systemctl restart httpd

Ссылка на документацию модуля Apache mod_http2 .

Настройка виртуальных хостов

Apache HTTP сервера имеет встроенный виртуальный хостинг , который позволяет обслуживающую информацию , на основании которого IP — адрес, имя хоста или порт запрашивается. Поместите ваши файлы конфигурации VirtualHost вthe /etc/httpd/conf.d/ каталог,

Вот пример:

sudo vim /etc/httpd/conf.d/example.conf

С данными, аналогичными приведенным ниже.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "var/www/html/example"
    ServerName computingforgeeks.com
    ServerAlias www.computingforgeeks.com
    ErrorLog "/var/log/httpd/example-error_log"
    CustomLog "/var/log/httpd/example-access_log" common
</VirtualHost>
  • Имя_сервера должно быть действительным DNS-именем, назначенным серверу, на котором размещен сайт.

Перезапустите службу httpd, чтобы активировать вновь созданный виртуальный хост.

sudo systemctl restart httpd

Additional tags:

  • How to implement HTTP/2 in Apache HTTP Web Server
  • How to configure Apache SSL on RHEL 8
  • Install Apache httpd server on CentOS 8
  • How Install Apache httpd server on RHEL 8

Дополнительные теги:

  • Как реализовать HTTP / 2 в веб-сервере Apache HTTP
  • Как настроить Apache SSL на RHEL 8
  • Установите сервер Apache httpd на CentOS 8
  • Установка сервер Apache httpd на RHEL 8

На этом мы заканчиваем наше руководство по установке Apache с mod_ssl & mod_http2 на RHEL 8 / CentOS 8. Для следующего чтения проверьте: