Azure Front Door の TLS ポリシーをカスタマイズできるようになりました
いわさです。
1 年ちょっと前に Azure Front Door の TLS 周りの確認をしたことがあります。
その際には TLS 1.3 に関する指定は特にできず、更に接続されるエッジによって対応状況も変わるという検証結果となっていました。
これが先日の Microsoft Azure のアップデートで、TLS ポリシーのカスタマイズができるようになりました。
TLS 1.3 を強制したいとか、あるいは暗号スイートの種類を制限したい場合などの対応がこれまで難しかったのですが、今後は柔軟に対応できるようになります。
今回カスタマイズ機能がサポートされたのは Standard/Premium で、Classic は対象外です。
TLS ポリシーのカスタマイズ方法
本機能は Front Door のドメインごとに TLS ポリシーを設定できる形です。
新しいドメインを追加する際にも設定できますし、構成済みドメインに対して TLS ポリシーのカスタマイズも出来ます。
構成画面の下部で TLS ポリシーが選択出来ます。
デフォルトは「TLS v1.2_2023」が選択されているのですが、「カスタム」を選択すると最小 TLS バージョンや暗号スイートを細かく選択することができるようになります。
ちなみに、組み込みの TLS ポリシーに関しては「ポリシーの詳細を表示する」を選択することで何の暗号スイートがサポートされているのか確認することが出来ます。
「カスタム」を選択すると次のように TLS ポリシーのカスタマイズ画面が表示されます。
今回は使わないですが、設定済みの他のドメインからポリシーを流用することも可能です。
TLS の最小バージョンは次のように TLS 1.2、TLS 1.3 のみ選択可能です。
知らなかったのですが、Azure Front Door における TLS 1.0 と 1.1 の最小バージョンは 2025 年 3 月 1 日からサポートされなくなっていました。
Azure Front Door TLS policy | Microsoft Learn より
最小 TLS バージョンによって選択できる暗号スイートが変わります。
TLS 1.3 の場合はTLS_AES_256_GCM_SHA384
とTLS_AES_128_GCM_SHA256
のみです。
TLS 1.2 の場合は次のようにサポートする暗号スイートを選択することが出来ます。現状 TLS 1.3 を最小バージョンにするケースはまだ少ないと思いますので、TLS 1.2 にしつつ脆弱な暗号スイートを回避しつつクライアントの特定要件に対応したい場合はカスタマイズすることになりそうです。
接続試験
今回最小 TLS を 1.3 にした上でデフォルトの 2 つの暗号スイートが使われるのかを確認してみました。
まずはカスタムドメインを追加してドメイン検証や証明書の準備、名前解決など全部できるようにしておきます。このあたりの設定手順は割愛します。
まずは最大 TLS 1.2 を指定してみます。
% curl -v -s --tls-max 1.2 https://hoge0418.azure.tak1wa.com/ > /dev/null
* Host hoge0418.azure.tak1wa.com:443 was resolved.
* IPv6: 2620:1ec:bdf::46
* IPv4: 13.107.246.46
* Trying [2620:1ec:bdf::46]:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [240 bytes data]
* TLSv1.2 (IN), TLS alert, protocol version (582):
{ [2 bytes data]
* TLS connect error: error:0A00042E:SSL routines::tlsv1 alert protocol version
* closing connection #0
エラーになりましたね。サーバーからプロトコルバージョンがサポートされていないと言われています。
続いて、普通に最小 TLS 1.3 で接続してその様子を眺めてみます。
1.3 でハンドシェイク成功して送受信出来ていますね。
% curl -v -s --tlsv1.3 https://hoge0418.azure.tak1wa.com/ > /dev/null
* Host hoge0418.azure.tak1wa.com:443 was resolved.
* IPv6: 2620:1ec:bdf::46
* IPv4: 13.107.246.46
* Trying [2620:1ec:bdf::46]:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [88 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [155 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [4413 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / secp256r1 / RSASSA-PSS
* ALPN: server accepted h2
:
上記のTLS change cipher, Change cipher spec
あたりを Wireshark で眺めてみましたが Server Hello でカスタムポリシーがサポートする暗号スイートのみが期待どおり返信されています。
さいごに
本日は Azure Front Door の TLS ポリシーをカスタマイズできるようになっていたので試してみました。
1 年前にはあまりカスタマイズできず、接続したタイミングによって挙動が変わるなどでどうかなーと思っていたのですが、現在は安定し細かいカスタマイズもできるようになってかなり使いやすくなっていますね。
いくつか制限事項やガイダンスもあるので、ご利用の際は公式ドキュメントにも目を通すようにしてください。