[小ネタ]CloudFrontのSSLポリシー設定変更で状態を確認してみた

2021.05.09

この記事は公開されてから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 ボタンをクリックするだけでステータスを確認することができます。