mod_sslで使用するSSLCipherSuiteの設定を詰めてみる '20


SSLCipherSuiteの見直しの必要性

7月7日付で「TLS設定ガイドライン」が改訂されたことから、以前に記載した設定からの見直しを行ってみる。

前提

CentOS 7.8で利用されているOpenSSL 1.0.2kではTLS 1.3をサポートしていないため、TLS 1.2のみを利用し、「推奨セキュリティ型」設定程度を目指すものとする。

設定を確認

以前の設定を確認

まずは以前の設定でどうなるかを確認してみる。

ssl.conf
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite SSL!3DES:!aNULL:EDH+HIGH:ECDH+HIGH:-AES128:-DSS

SSL Server Testで確認すると、一年前はAだった評価がBになってしまっていた。

Cipher Suiteの評価もWEAKと表示されているものがある。

厳しめに設定

「高セキュリティ型での利用推奨暗号アルゴリズム一覧」ではPFS(Perfect Forward Secrecy)が必須GCM推奨、ハッシュ関数はSHA256(以上)必須のようなので、シンプルに下記の設定を試してみる。
ECDHEがDHEより望ましいようなので、その部分も一応反映させる。

$ openssl ciphers -v '!SSLv3:!DSS:AESGCM+ECDHE:AESGCM+EDH'
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD

画像は省略するが、評価Aとなり、ブラウザの互換性もおよそ問題ないように感じる。ということで設定は完了。

対応ブラウザを増やす

一応、古いiOS、macOSのサポートのため、設定を緩和してみる。WEAKと評価されるが、ガイドライン上は問題ない。

$ openssl ciphers -v '!SSLv3:!DSS:AESGCM+ECDHE:AESGCM+EDH:EDH+AES256+SHA256'
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=RSA  Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA256

設定する内容

という訳で、以下のような設定にすることとした。

ssl.conf
SSLProtocol -all TLSv1.2
SSLCipherSuite !SSLv3:!DSS:AESGCM+ECDHE:AESGCM+EDH:EDH+AES256+SHA256