1.9. mod_ssl モジュールの有効化

mod_ssl を使用して TLS (SSL) サーバーを設定する場合は、別のアプリケーションやモジュールが同じポートを使用するように設定することは できません 。ポート 443 は、HTTPS のデフォルトポートです。

mod_ssl モジュールおよび OpenSSL ツールキットを使用して SSL サーバーを設定するには、mod_ssl パッケージと openssl パッケージをインストールします。root で以下のコマンドを実行します。

~]# yum install mod_ssl openssl

これにより、/etc/httpd/conf.d/ssl.confmod_ssl 設定ファイルが作成されます。このファイルは、デフォルトでメインとなる Apache HTTP Server 設定ファイルに含まれています。モジュールを読み込むには、「サービスの再起動」の説明どおりに httpd サービスを再起動します。

重要

SSLv2 プロトコルおよび SSLv3 プロトコルのバージョンは、安全と見なされなくなったため、OpenSSL (および mod_ssl) から削除されました。

1.9.1. mod_ssl で異なるバージョンの TLS の有効化

RHEL 8 のデフォルトの httpd インストールには、SSLProtocol ディレクティブがコメントアウトされています。したがって、httpd はシステム全体の暗号化ポリシーに従い、TLS 1.2 および TLS 1.3 の接続のみが許可されます。詳細は「システム全体の暗号化ポリシーの使用」を参照してください。

TLS プロトコルの特定バージョンは、グローバルまたはサイトごとに有効または無効にできます。

  • プロトコルバージョンをグローバルに指定するには、設定ファイルの SSL Global Context セクションに SSLProtocol ディレクティブを追加し、その他の場所から削除します。
  • あるサイトのプロトコルバージョンを指定するには、該当する VirtualHost セクションの SSL Protocol support の下にあるデフォルトのエントリーを編集します。各サイトの VirtualHost セクションでプロトコルバージョンを指定しないと、サイトはグローバルセクションから設定を継承します。

特定のプロトコルバージョンが有効になっていることを確認するには、管理者が、SSL Global Context セクション のみ、もしくは サイトの VirtualHost セクションに SSLProtocol を指定する必要があります。

TLSv1.x の特定のバージョンの有効化

特定バージョンの TLSv1.x プロトコルのみを有効にするには、以下の手順に従います。

  1. root/etc/httpd/conf.d/ssl.conf ファイルを開き、 SSLProtocol ディレクティブの すべて のインスタンスを検索します。デフォルトでは、このファイルには以下のようなセクションが含まれます。

    ~]# vi /etc/httpd/conf.d/ssl.conf
    #   List the protocol versions which clients are allowed to connect with.
    #   The OpenSSL system profile is used by default.  See
    #   update-crypto-policies(8) for more details.
    #SSLProtocol all -SSLv3
    #SSLProxyProtocol all -SSLv3
  2. たとえば、TLS プロトコルをバージョン 1.3 に設定するには、以下のように SSLProtocol 行を編集します。

    SSLProtocol -all +TLSv1.3

    ファイルを保存してから閉じます。

  3. 以下のように変更を確認します。

    ~]# grep SSLProtocol /etc/httpd/conf.d/ssl.conf
    SSLProtocol -all +TLSv1.3
  4. 以下のように Apache デーモンを再起動します。

    ~]# systemctl restart httpd

    セッションが中断されることに注意してください。

TLS プロトコルのステータスのテスト

有効または無効になっている TLS のバージョンを確認するには、openssl s_client -connect コマンドを使用します。このコマンドの形式は以下のとおりです。

openssl s_client -connect hostname:port -protocol

port は、テストするポートで、protocol は、テストするプロトコルバージョンです。ローカルで稼働している SSL サーバーをテストする場合は、localhost をホスト名として使用します。

openssl s_client コマンドのオプションは、man ページの s_client (1) に記載されています。

1.9.2. TLS 証明書の自動プロビジョニングおよび更新

(Let’s Encrypt などの証明書プロバイダーで使用するため) 自動証明書管理環境 (ACME) プロトコルを使用した、TLS 証明書の自動プロビジョニングおよび更新に、mod_md パッケージで対応するようになりました。