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