この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
どーもsutoです。
CloudFrontのセキュリティポリシーを変更して「TLS 1.0/1.1」を無効化する際に、変更前後の状態をsslscanで確認してみました。
今時の設定として、CloudFrontのセキュリティポリシーは最新の状態としておくのがベストです。(サポートされているプロトコルは以下の公式ドキュメントを参照。)
今回はCloudFrontのSecurity Policyが「TLSv1」から「TLSv1.2_2019」に変更して、SSLサポートの状態がどのように変化したのかを「sslscan」というチェックツールを使って確認していきます。
本来のsslscanからのfork版であるrbsec-sslscanがGitHub上で開発されているため、こちらから入手することができますが、本稿ではHomebrewコマンドで入手します。
実際にやってみた
前提
ご自身のAWSアカウント上にCloudFrontディストリビューションが作成&動作済、自身の作業端末にHomebrewがインストール済であることを前提とします。
変更前のCloudFrontディストリビューションの設定は以下のとおりです。(ACMの証明書とRoute53のレコード「test.XXXXXXX.classmethod.info」に紐づけています)
sslscanのインストールとSSL設定の事前確認
~ % brew install sslscan
~ % sslscan --version
2.0.9-static
OpenSSL 1.1.1k 25 Mar 2021
次に実際にsslscanコマンドを実行してみて確認してみましょう。
~ % sslscan test.XXXXXXX.classmethod.info
Version: 2.0.9-static
OpenSSL 1.1.1k 25 Mar 2021
Connected to 99.84.63.68
Testing SSL server test.XXXXXXX.classmethod.info on port 443 using SNI name test.XXXXXXX.classmethod.info
SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 enabled
TLSv1.1 enabled
TLSv1.2 enabled
TLSv1.3 enabled
TLS Fallback SCSV:
Server supports TLS Fallback SCSV
TLS renegotiation:
Secure session renegotiation supported
TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
TLSv1.1 not vulnerable to heartbleed
TLSv1.0 not vulnerable to heartbleed
Supported Server Cipher(s):
Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253
Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.2 128 bits AES128-GCM-SHA256
Accepted TLSv1.2 256 bits AES256-GCM-SHA384
Accepted TLSv1.2 128 bits AES128-SHA256
Accepted TLSv1.2 256 bits AES256-SHA
Accepted TLSv1.2 128 bits AES128-SHA
Accepted TLSv1.2 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.1 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.1 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.1 256 bits AES256-SHA
Accepted TLSv1.1 128 bits AES128-SHA
Accepted TLSv1.1 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.0 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.0 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.0 256 bits AES256-SHA
Accepted TLSv1.0 128 bits AES128-SHA
Accepted TLSv1.0 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLSv1.0とTLSv1.1がenableになっており、サポートが有効になっている暗号一覧もAWS公式ドキュメントに記載されているものが表示されています。
SSLセキュリティポリシーを変更
ではAWSのCloudFrontディストリビューションでSecurity Policyを「TLSv1.2_2019」に変更し、再度sslscanコマンドを実行して結果を見てみましょう。
~ % sslscan test.suto.ishikawa.classmethod.info
Version: 2.0.9-static
OpenSSL 1.1.1k 25 Mar 2021
Connected to 99.84.63.57
Testing SSL server test.suto.ishikawa.classmethod.info on port 443 using SNI name test.suto.ishikawa.classmethod.info
SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 disabled
TLSv1.1 disabled
TLSv1.2 enabled
TLSv1.3 enabled
TLS Fallback SCSV:
Server supports TLS Fallback SCSV
TLS renegotiation:
Session renegotiation not supported
TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
Supported Server Cipher(s):
Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253
Preferred TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA256 Curve 25519 DHE 253
TLS1.2、TLS1.3以外はすべてdisableとなり、暗号一覧も古いもののサポートは無効化されたことがわかります。
おまけ
SSL設定状態を確認するにはsslscanの他にSSL Server Testというサイトがあります。こちらはHostname を入力してSubmit ボタンをクリックするだけでステータスを確認することができます。