RHEL8 で SSL/TLS を使用して Apache/mod_ssl をセキュリティー保護する
openssl を使用する Apache (httpd-2.4.37)、mod_ssl (mod_ssl-2.4.37) をセキュリティー保護します。
この記事は、Securing Applications Collection を抜粋したものです。
RHEL8 での暗号化
RHEL8 には、マシンの暗号化のデフォルトを一元化するための新しいメカニズムがあります。
これは crypto-policies パッケージによって処理されます。この根拠と更新ポリシーの詳細については、他のドキュメントを参照してください。
- Strong crypto defaults in RHEL-8 and deprecations of weak crypto algorithms
- System-wide crypto policies in RHEL 8
- crypto-policies コマンドの man ページ
Apache で使用されるプロトコルまたは暗号を制限または緩和するという非常に具体的な要件がない限り、システム全体の暗号化ポリシーを強くお勧めします。
設定ファイル
/etc/httpd/conf.d/ssl.conf
システム全体の暗号化ポリシーを使用した省略形
特定のカスタマイズが必要な唯一の項目は、適切な証明書の場所です。
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
SSLCertificateFile /etc/pki/tls/certs/httpd.dh.crt
SSLCertificateChainFile /etc/pki/tls/certs/httpd-chain.crt
カスタム設定の省略形
crypto-policy の デフォルト に相当します。
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
SSLCertificateFile /etc/pki/tls/certs/httpd.dh.crt
SSLCertificateChainFile /etc/pki/tls/certs/httpd-chain.crt
SSLProtocol all -TLS1 -TLSv1.1
SSLCipherSuite @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
プロトコル
SSLProtocol all -TLSv1 -TLSv1.1
一般的な互換性を提供します。
より高いセキュリティー、互換性の低いプロトコル
SSLProtocol All -TLSv1 -TLSv1.1 -TLSv1.2
古い ブラウザーとの互換性 向けに TLSv1.0 を有効化する
SSLProtocol all
暗号化
SSLCipherSuite @SECLEVEL=2:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:-aDSS:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
強力な暗号を合理的に選択します。
より高いセキュリティー、互換性の低いプロトコル
SSLCipherSuite @SECLEVEL=3:kEECDH:kEDH:kPSK:kDHEPSK:kECDHEPSK:-kRSA:-aDSS:-AES128:-SHA256:-3DES:!DES:!RC4:!RC2:!IDEA:-SEED:!eNULL:!aNULL:-SHA1:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
古い ブラウザーとの互換性 向けにレガシー暗号化を有効化する
SSLCipherSuite @SECLEVEL=1:kEECDH:kRSA:kEDH:kPSK:kDHEPSK:kECDHEPSK:!DES:!RC2:!IDEA:-SEED:!eNULL:!aNULL:!MD5:-SHA384:-CAMELLIA:-ARIA:-AESCCM8
非常に古いブラウザーを許可します。
証明書処理
Apache は、キーと証明書用に個別の PEM 形式のファイルを想定し、CA チェーン用に別のファイルを想定しています。
キーファイル
SSLCertificateKeyFile /etc/pki/tls/private/httpd.key
キーファイルは、root ユーザーのみが読み取り可能である必要があります。
証明書ファイル
SSLCertificateFile /etc/pki/tls/certs/httpd.dh.crt
SSLCertificateFile には、PFS を有効にするための Diffie-Helman パラメーターを含めることができるため、追加のファイルのペアを維持する必要があります。
実際の証明書は、以下の場所に配置する必要があります。/etc/pki/tls/certs/httpd.crt
続いて、以下を実行して結合ファイルを作成する必要があります。
次に、このシーケンスを定期的 (毎週) に実行して DH パラメーターを更新し、続いてサービスをリロードする必要があります。openssl dhparam -out /etc/pki/tls/private/httpd.dh.param.tmp 4096 mv /etc/pki/tls/private/httpd.dh.param.tmp /etc/pki/tls/private/httpd.dh.param cat /etc/pki/tls/certs/httpd.crt /etc/pki/tls/private/httpd.dh.param >/etc/pki/tls/certs/httpd.dh.crt systemctl reload httpd
認証局チェーン
SSLCertificateChainFile /etc/pki/tls/certs/httpd-chain.crt
SSLCertificateFile の中間証明書とルート証明書
Comments