Cloudflare

ホスト単位でTLS設定をカスタマイズする方法
ーコラムー
2023年11月1日号

はじめに

CloudflareのCDN/WAFでSSL/TLSの機能をご利用の場合、特定のホストのみ異なるTLSバージョンを選択したいというご要望があがることがあります。
これまではTLS最小バージョンや暗号スイートの設定はドメイン全体に適用されていましたが、2023年8月からこれらのTLS設定がホストごとに指定できるようになりましたので、ご紹介します。

ホストごとのTLS設定でできること、利用条件

ホストごとのTLS設定では以下の設定ができます。

  1. 最小TLSバージョンの指定
  2. 暗号スイートリストの指定
  3. HTTP/2 の有効無効

またホストごとのTLS設定にはいくつか利用条件があります。

  1. ホストごとのTLS設定はAPIからのみ設定できます。Cloudflareダッシュボードからは設定できません。
  2. サーバ証明書にはAdvanced Certificate Manager(ACM)証明書※1を使用する必要があります。カスタム証明書やUniversal証明書では利用できません。

※1 Advanced Certificate Manager
https://www.cloudflare.com/ja-jp/advanced-certificate-manager/

実際に試してみました

①最小TLSバージョンの指定

ドメイン全体での最小TLSバージョンが1.2の環境で、特定ホストの最小TLSバージョンを1.0へ変更してみました。
curl では、以下のコマンドで設定確認と変更ができます。

特定ホストの最小TLSバージョン設定確認コマンド例:

curl --request GET --header 'X-Auth-Key:<API key>' --header "X-Auth-Email:<アカウントEmail>" --url  https://api.cloudflare.com/client/v4/zones/<zoneid>/hostnames/settings/min_tls_version | jq .

特定ホストの最小TLSバージョン設定変更コマンド例:

curl --request PUT --header 'X-Auth-Key:<API key>' --header "X-Auth-Email:<アカウントEmail>" --url "https://api.cloudflare.com/client/v4/zones/<zoneid>/hostnames/settings/min_tls_version/<FQDN>"  --data '{  "value": "<TLSver>"}'   | jq .

設定変更が成功すると、valueが指定した値 “1.0” になり、status は"pending_deployment"と表示されます。一方、設定変更が失敗した場合にはエラーメッセージが表示されます。

特定ホストの最小TLSバージョン設定変更成功例:

設定変更後のステータス確認では、status が "active" になっていることがわかります。これで設定変更と確認は終了です。

設定変更後の確認例:

設定変更後に接続確認を行いました。設定変更前はTLS1.0では接続できませんでしたが、設定変更後には接続することができました。

curlコマンドでの接続確認(設定変更前):

curlコマンドでの接続確認(設定変更後):

②暗号スイートリストの指定
③HTTP/2 の有効無効

同様に特定ホストの暗号スイート、およびHTTP/2 の設定が問題なく変更できることを確認しました。
暗号スイートの設定を変更する際は、1つの暗号スイートを指定する場合でも配列[]で指定する必要があります。最小TLSバージョンやHTTP/2設定とは異なりますので注意が必要です。

特定ホストの暗号スイートの設定変更コマンド例:

curl --request PUT --header 'X-Auth-Key:<API key>' --header "X-Auth-Email:<アカウントEmail>" --url "https://api.cloudflare.com/client/v4/zones/<zoneid>/hostnames/settings/ciphers/<FQDN>"  --data '{ "value": ["<CipherSuite>",<CipherSuite>] }'   | jq .

特定ホストのHTTP/2の設定変更コマンド例:

curl --request PUT --header 'X-Auth-Key:<API key>' --header "X-Auth-Email:<アカウントEmail>" --url "https://api.cloudflare.com/client/v4/zones/<zoneid>/hostnames/settings/http2/<FQDN>"  --data '{ "value": "<http2>" }'   | jq .

最小TLSバージョンの変更と同様に設定変更を実施後、valueが指定した値になり、status は"pending_deployment"と表示され、変更されたことを確認できました。

特定ホストの暗号スイート設定変更成功例:

特定ホストのHTTP/2 設定変更成功例:

終わりに

今回は、ホストごとのTLS関連設定についてご紹介しました。この設定変更はGUIダッシュボードからは行えないため、気が付きにくいですがAPIで設定可能ですので是非試してみてください。

動作を試す際には、ホスト単位でTLS設定を変更するAPIドキュメントやデフォルトでサポートされている暗号スイートもご確認ください。


三井情報株式会社

執筆者:
三井情報株式会社
ソリューション技術グループ ソリューション第二技術本部 次世代基盤技術部 第二技術室