ウェブサイト検索

CentOS 8|RHEL 8 に mod_ssl/mod_http2 を使用して Apache をインストールする |


質問: RHEL 8/CentOS 8 に Apache をインストールする方法、RHEL 8/CentOS 8 に mod_ssl をインストールする方法、mod_http2 をインストールする方法> RHEL 8/CentOS 8 では?この投稿では、mod_ssl と mod_http2 を使用して Apache Web サーバーをインストールする方法について説明します。 Apache は、Apache Software Foundation によって開発されたオープンソース Web サーバーです。 Web サーバー (HTTP サーバー) は、ハイパーテキスト トランスポート プロトコル (HTTP) を通じて Web 経由でクライアントにコンテンツを提供するために使用されるネットワーク サービスです。

Red Hat Enterprise 8 (RHEL 8) では、Apache HTTP Server がバージョン 2.4.33 に更新され、次の新機能が追加されました。

  • 事前構成されたマルチプロセッシングモジュール (MPM)
  • suexec によってユーザーに許可される最小の UID と GID は、それぞれ 1000 と 500 になりました (RHEL 7 httpd では 100 と 100 が使用されました)。
  • /etc/sysconfig/httpd は、httpd サービスの環境変数を設定するためのインターフェイスとしてサポートされなくなりました。
  • HTTP/2 は、mod_http2 パッケージを通じてサポートされるようになりました。
  • 新しいモジュールが追加されました – mod_proxy_uswsgimod_proxy_hcheckmod_proxy_fdpassmod_cache_socache、および mod_md
  • 新しいサブパッケージ httpd-filesystem 所有ディレクトリ。
  • 新しい httpd-init.service%post script を置き換えて、自己署名 mod_ssl キーペアを作成します。
  • mod_auth_kerb モジュールは mod_auth_gssapi モジュールに置き換えられました。

RHEL 8/CentOS 8 に Apache をインストールする

RHEL 8 の Apache Web サーバー パッケージは、httpd と呼ばれます。このパッケージとそのツールは、Application Stream リポジトリを通じて配布されます。コマンドを使用して httpd モジュールを RHEL 8 にインストールします。

$ sudo yum install @httpd
....
Transaction Summary
======================================================================================================================================================================================================
Install  12 Packages

Total download size: 2.2 M
Installed size: 5.8 M
Is this ok [y/N]: y

これにより、次の httpd パッケージがインストールされます。

  • httpd: Apache HTTP Web サーバー。
  • httpd-filesystem: ディレクトリの正しい権限を含む、Apache HTTP サーバーの基本的なディレクトリ レイアウトが含まれています。
  • httpd-tools: Apache HTTP サーバーで使用できるツールが含まれています
  • mod_http2: httpd 2.4 サーバー用の libnghttp2 上に HTTP2 プロトコル (h2+h2c) を実装する Apache httpd モジュール。
  • mod_ssl: Secure Sockets Layer (SSL) および Transport Layer Security (TLS) プロトコルを介して、Apache Web サーバーに強力な暗号化を提供します。
  • およびその他の必要な依存関係 – apr*

httpd サービスは、デフォルトで次の場所から設定を読み取ります。

  • /etc/httpd/conf/httpd.conf – これはメインの httpd 設定ファイルです。
  • /etc/httpd/conf.d/ – これは、メイン設定ファイルに含まれる設定ファイルの補助ディレクトリです。 VirtualHost などの構成ファイルをこのディレクトリに配置できます。
  • /etc/httpd/conf.modules.d/ – RHEL にパッケージ化された動的モジュールをロードする構成ファイルが含まれています。このディレクトリ内の構成ファイルが最初に処理されます。
  • /usr/lib64/httpd/modules/ – httpd モジュールが含まれるディレクトリ。

RHEL 8/CentOS 8 での httpd サービスの管理

このセクションでは、Apache HTTP サービスの状態 (開始停止再起動) を管理し、現在のステータスを確認する方法について説明します。

httpd サービスの開始:

sudo systemctl start httpd.service

以下のコマンドを使用して、起動時に httpd サービスが自動的に開始されるようにします。

sudo systemctl enable httpd.service

以下の 1 つのコマンドを使用して、起動時にサービスを開始し、開始できるようにすることができます。

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 サービスを再起動するには 2 つのオプションがあります。

1. 実行中の httpd サービスを停止し、すぐに再起動します – PHP などの動的にロードされるモジュールをインストールまたは削除した後に役立ちます。

sudo systemctl restart httpd.service

2. アクティブなリクエストに影響を与えずに設定をリロードする – 実行中の httpd サービスはその設定ファイルのみをリロードし、現在処理されているすべてのリクエストは引き続き古い設定を使用します。

sudo systemctl reload httpd.service

構成にエラーの可能性があるかどうかを確認するには、次のように入力します。

$ sudo apachectl configtest
Syntax OK

設定ファイルにエラーがない場合は、Syntax OK が表示されるはずです。

Apache httpd サーバーに SSL モジュールをロードする

mod_ssl モジュールをインストールしましたが、使用する前に LoadModule ディレクティブを使用してモジュールをロードする必要があります。

mod_ssl DSO をロードするには、httpd.conf 設定ファイルの最後に以下の行を追加します。

$ sudo vi /etc/httpd/httpd.conf
LoadModule ssl_module modules/mod_ssl.so

以下のスクリーンショットを参照してください。

モジュールをロードした後、Web サーバーを再起動して構成を再ロードします。

sudo systemctl restart httpd

デフォルトの SSL 構成ファイル /etc/httpd/conf.d/ssl.confSSLProtocol ディレクティブを変更することで、たとえば SSL バージョン 2 と SSL バージョン 3 を無効にできます。このファイル。

SSLProtocol all -SSLv2 -SSLv3

以下の行は、TLS 1 以降を除くすべての SSL および TLS プロトコルを無効にします

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

サンプル出力。

$ sudo openssl s_client -connect localhost:443 -tls1_2

CONNECTED(00000004)
depth=1 C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email 
verify error:num=19:self signed certificate in certificate chain
---
Certificate chain
 0 s:C = US, O = Unspecified, CN = rhel8.local, emailAddress = [email 
   i:C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email 
 1 s:C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email 
   i:C = US, O = Unspecified, OU = ca-4688871391028164607, CN = rhel8.local, emailAddress = [email 
---
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 

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

SSL キーと証明書を構成するためのディレクティブは次のとおりです。

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

ファイアウォールの構成

firewalld サービスを実行している場合は、ポート 80 と 443 を許可します。

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

Firewalld の詳細については、「Firewalld の概要」を参照してください。

HTTP/2 モジュールのロード – mod_http2

mod_http2 モジュールをロードして HTTP/2 のサポートを有効にします

LoadModule http2_module modules/mod_http2.so

また、以下を Protocols ディレクティブに追加します

Protocols h2 h2c http/1.1

プロトコルディレクティブパラメータの意味:

  • h2 – SSL/TLS 経由で HTTP/2 プロトコルをサポートするように Apache に指示します
  • h2c – Apache に TCP 経由で HTTP/2 をサポートするように指示します。
  • http/1.1 – クライアントが HTTP/2 を受け入れない場合は、HTTP/1.1 経由でリクエストを処理します。

Apache Web サーバーを再起動して、リロード構成を有効にします。

sudo systemctl restart httpd

Apache モジュール mod_http2 ドキュメントを参照してください。

仮想ホストのセットアップ

Apache HTTP サーバーには仮想ホスティングが組み込まれており、リクエストされている IP アドレス、ホスト名、またはポートに基づいて情報を提供できます。 VirtualHost 構成ファイルを /etc/httpd/conf.d/ ディレクトリに配置します。

以下に例を示します。

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

以下のようなデータがあります。

<VirtualHost *:80>
    ServerAdmin [email 
    DocumentRoot "/var/www/html/example"
    ServerName example.com
    ServerAlias www.example.com
    ErrorLog "/var/log/httpd/example-error_log"
    CustomLog "/var/log/httpd/example-access_log" common
</VirtualHost>
  • ServerName は、サイトをホストするサーバーに割り当てられた有効な DNS 名である必要があります。

httpd サービスを再起動して、新しく作成した仮想ホストをアクティブ化します。

sudo systemctl restart httpd

追加のタグ:

  • Apache HTTP Web サーバーに HTTP/2 を実装する方法
  • RHEL 8 で Apache SSL を構成する方法
  • CentOS 8 に Apache httpd サーバーをインストールする
  • RHEL 8 に Apache httpd サーバーをインストールする

RHEL 8/CentOS 8 に mod_ssl および mod_http2 を使用して Apache をインストールする方法に関するガイドはこれで終わりです。次の内容については、次の内容を確認してください。

  • Prometheus と Grafana を使用して Apache Web サーバーを 5 分で監視する
  • RHEL 8 に PHP をインストールする方法
  • RHEL 8/CentOS 8 に MariaDB をインストールする方法
  • RHEL 8 に MySQL 8.0 をインストールする方法
  • RHEL 8 に Go をインストールする方法


関連記事: