Azure Application Gateway で TLS 1.3 がサポートされているので、カスタム SSL ポリシーやデフォルトポリシーの設定値を確認してみた

2024.02.25

いわさです。

先日 Azure Front Door の TLS 1.3 サポート状況が現状よくわからないという話を記事にしました。

一方で Azure Application Gateway についてはしっかりとサポートされているようです。
2022 年 7 月にプレビューリリースされ、同年 11 月には GA となっています。

また、上記アナウンスではデフォルトポリシーについてもいずれ更新される予定だと記述されています。
本日は Application Gateway の最新デフォルトポリシーの状況と、カスタムポリシーの設定方法について確認してみましたので紹介します。

Application Gateway V2 の SSL ポリシーでサポートされる

早速 Application Gateway を作成していきたいのですが、TLS 1.3 をサポート出来るのは SKU が Standard V2 か WAF V2 のみとなっています。

そのため今回は Standard V2 で作成を行いました。

基本的な Application Gateway の構成手順については割愛します。
作成後リスナー設定から適用される SSL ポリシーを確認することが出来ます。
本日時点のデフォルト SSL ポリシーは次のようになっていました。

sslscanで確認してみると次のとおり TLS 1.2 と TLS 1.3 が有効化されており、TLS 1.0 と TLS 1.1 は無効化されています。
また、TLS 1.2 についても PFS 対応暗号スイートのみがサポートされています。

% sslscan https://hoge0225.tak1wa.com/
Version: 2.1.3
OpenSSL 3.2.1 30 Jan 2024

Connected to 74.226.225.199

Testing SSL server hoge0225.tak1wa.com on port 443 using SNI name hoge0225.tak1wa.com

  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  256 bits  TLS_AES_256_GCM_SHA384        Curve 25519 DHE 253
Accepted  TLSv1.3  128 bits  TLS_AES_128_GCM_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  128 bits  ECDHE-RSA-AES128-SHA256       Curve 25519 DHE 253
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA384       Curve 25519 DHE 253

  Server Key Exchange Group(s):
TLSv1.3  128 bits  secp256r1 (NIST P-256)
TLSv1.3  192 bits  secp384r1 (NIST P-384)
TLSv1.3  260 bits  secp521r1 (NIST P-521)
TLSv1.3  128 bits  x25519
TLSv1.3  224 bits  x448
TLSv1.2  128 bits  secp256r1 (NIST P-256)
TLSv1.2  192 bits  secp384r1 (NIST P-384)
TLSv1.2  260 bits  secp521r1 (NIST P-521)
TLSv1.2  128 bits  x25519
TLSv1.2  224 bits  x448

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  hoge0225.tak1wa.com
Issuer:   hoge0225.tak1wa.com

Not valid before: Feb 25 00:22:30 2024 GMT
Not valid after:  Feb 25 00:32:30 2025 GMT

SSL ポリシーをカスタムする

Azure Application Gateway の SSL ポリシーは柔軟にカスタマイズすることが出来ます。
最小プロトコルバージョンと、サポートさせる暗号スイートを任意で選択することが出来ます。

ただし、TLS 1.3 のさオートについては通常のカスタムポリシーではなく、CustomV2 ポリシーでのみ設定が出来ます。
カスタムの場合は最小 TLS には TLS 1.0 から TLS 1.2 まで選択可能です。

一方で CustomV2 の場合は次のように最小プロトコルバージョンに指定出来るのは TLS 1.2 と TLS 1.3 のみです。
TLS 1.3 を最小にするのはまだしばらくは無さそうな気がしますが、最小に TLS 1.3 からも指定出来るみたいですね。

まず次のように TLS 1.3 のみでポリシーを変更してみました。

sslscanで確認してみると、確かに TLS 1.2 も無効化されていますね。

% sslscan https://hoge0225.tak1wa.com/
Version: 2.1.3
OpenSSL 3.2.1 30 Jan 2024

Connected to 74.226.225.199

Testing SSL server hoge0225.tak1wa.com on port 443 using SNI name hoge0225.tak1wa.com

  SSL/TLS Protocols:
SSLv2     disabled
SSLv3     disabled
TLSv1.0   disabled
TLSv1.1   disabled
TLSv1.2   disabled
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

  Supported Server Cipher(s):
Preferred TLSv1.3  256 bits  TLS_AES_256_GCM_SHA384        Curve 25519 DHE 253
Accepted  TLSv1.3  128 bits  TLS_AES_128_GCM_SHA256        Curve 25519 DHE 253

  Server Key Exchange Group(s):
TLSv1.3  128 bits  secp256r1 (NIST P-256)
TLSv1.3  192 bits  secp384r1 (NIST P-384)
TLSv1.3  260 bits  secp521r1 (NIST P-521)
TLSv1.3  128 bits  x25519
TLSv1.3  224 bits  x448

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  hoge0225.tak1wa.com
Issuer:   hoge0225.tak1wa.com

Not valid before: Feb 25 00:22:30 2024 GMT
Not valid after:  Feb 25 00:32:30 2025 GMT

ちなみに CustomV2 の TLS 1.2 暗号スイートは PFS 対応のもののみが使えました。

一方で従来(レガシー?)のカスタムポリシーだと TLS 1.2 で RSA も選択出来ますね。
現在は TLS 1.2 以上で PFS 対応暗号スイートの利用が推奨されているので、レガシークライアントのサポートが必須要件でなければ CustomV2 を基本的に使うのが良いですね。

カスタムの場合はレガシークライアントサポート用に非推奨のバージョンを設定出来ます。
次は TLS 1.1 を最低プロトコルバージョンに指定した場合です。

% sslscan https://hoge0225.tak1wa.com/
Version: 2.1.3
OpenSSL 3.2.1 30 Jan 2024

Connected to 74.226.225.199

Testing SSL server hoge0225.tak1wa.com on port 443 using SNI name hoge0225.tak1wa.com

  SSL/TLS Protocols:
SSLv2     disabled
SSLv3     disabled
TLSv1.0   disabled
TLSv1.1   enabled
TLSv1.2   enabled
TLSv1.3   disabled

  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.2 not vulnerable to heartbleed
TLSv1.1 not vulnerable to heartbleed

  Supported Server Cipher(s):
Preferred TLSv1.2  256 bits  AES256-SHA256                
Accepted  TLSv1.2  256 bits  ECDHE-RSA-AES256-SHA384       Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-GCM-SHA256   Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  ECDHE-RSA-AES128-SHA256       Curve P-256 DHE 256
Accepted  TLSv1.2  128 bits  AES128-GCM-SHA256            
Accepted  TLSv1.2  128 bits  AES128-SHA256                
Accepted  TLSv1.2  128 bits  AES128-SHA                   
Accepted  TLSv1.2  256 bits  AES256-SHA                   
Accepted  TLSv1.2  256 bits  AES256-GCM-SHA384            
Preferred TLSv1.1  128 bits  AES128-SHA                   
Accepted  TLSv1.1  256 bits  AES256-SHA                   

  SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
RSA Key Strength:    2048

Subject:  hoge0225.tak1wa.com
Issuer:   hoge0225.tak1wa.com

Not valid before: Feb 25 00:22:30 2024 GMT
Not valid after:  Feb 25 00:32:30 2025 GMT

TLS 1.1 と TLS 1.2 が使える状態であることを確認しました。
柔軟に設定出来て良きですが、気をつけて使う必要がありますね。

さいごに

本日は Azure Application Gateway で TLS 1.3 がサポートされているので、カスタム SSL ポリシーやデフォルトポリシーの設定値を確認してみました。

AWS だとセキュリティポリシーということで暗号スイートのセットが提供されている形なのですが、Azure の場合は柔軟にカスタマイズすることも出来ますね。
高セキュリティなポリシー設定も出来ますし、レガシークライアントをサポートするための例外的なポリシー設定も出来ます。