ここではCloudflareで管理しているドメインにHSTS (Strict-Transport-Security)を適用させる方法を解説します。
1.HSTSの一般論
ここではHSTSとは何かの基本的な事を解説します。
下図はCloudflareのCDN(Contents Delivery Network)を利用しない接続図です。

■CloudflareはURLに対応するWebサーバのグローバルIPを返すだけです。
HSTSとは上図のWebサイトをアクセスする際にクライアント(ユーザーのブラウザ)にHTTPS通信を強制する機能になります。
似たものに[常に HTTPS を使用する]というリダイレクト機能がありますが、これはHTTPでアクセスがきた時に[HTTPSでアクセスして下さい]とブラウザにHTTP通信で返す機能です。
しかしこのHTTP通信の返信は暗号化されていないので、ここに改ざんが発生する可能性があります。
一方、HSTSはHTTPでの1回目のアクセス時に指定された期間はHTTPSでアクセスしろとブラウザに返信します。
よって次回アクセスがこの期間内の場合はHTTPS通信が強制されます。
これを[Max Age]と呼び、この値はサイトアクセス毎に更新されるので有効期限切れはありません。
しかし上記では1回目だけHTTPアクセスがありますが、[プリロード]を有効にしておくとGoogleが運営するHSTS先読みサービスにこのドメインが登録され、1回目のアクセスからHTTPS通信が強制されます。
また[HSTS ポリシーをサブドメインに適用する]を有効にしておくと、HSTSは総てのサブドメインにも適用されます。
注意点はサブドメインの中にHTTPサイトがあった場合は、当然このサイトはアクセスできなくなります。
よってHSTSを適用する前に総てのサイトがHTTPS対応になっているか?を確認する事が重要になります。
2.CloudflareのHSTS設定
Cloudflareにドメインやサブドメインを追加するとCDN(Contents Delivery Network)機能がONになり、接続関係は下図の様になります。

■CloudflareとWebサーバの接続は上図のトンネル以外にA/AAAA接続がありますがトンネル接続が利便性やセキュリティ面からお勧めです。
このCDNがONになると通信は下記の様に変わります。
①クライアント(ユーザーのブラウザ)とCloudflareのエッジサーバ
②CloudflareのエッジサーバとWebサーバ
よってHSTSは①の所でのやり取りになり②は関係ありません。
別の言い方をすると②の所でHTTP通信のWebサーバがあっても問題ないという事です。
Cloudflareを利用した通信は①の所で改竄が発生するとCloudflareのWAF(Web Application Firewall)が検知する筈です。
しかし①の所のHSTS機能がONならば、この段階での改竄が減る事を意味しています。
よってCloudflareのHSTSは、あまり深く考えずに設定しても問題ありません。
設定方法は下記になります。
1.Cloudflareダッシュボードにログイン
Cloudflareダッシュボードにアクセスし、アカウントにログインします。
2.該当のドメインを選択
ログイン後、管理したいドメインを選択します。
3.SSL/TLSに移動
ダッシュボードの左側にあるメニューから「SSL/TLS」セクションを選択します。
ここで、SSL/TLSに関する各種設定を変更できます。
4.エッジ証明書に移動
ダッシュボードの左側にあるメニューから「SSL/TLS」の「エッジ証明書」セクションを選択します。
ここで、エッジ証明書に関する設定を変更できます。
5.HSTSの設定
画面の中にあるHTTP Strict Transport Security (HSTS)の[HSTS を有効にする]を選択します。
注意書きを読み、「理解しました」を選択し、[次へ]を挿入します。
下記で設定し、[保存]します。
| 項目 | 設定 | 解説 |
| HSTS (Strict-Transport-Security) を有効にする | ON | サイトにアクセスする際、ブラウザはHTTPSを強制します。 |
| Max Age ヘッダー (max-age) | 6月(推奨) | ブラウザにHTTPSを強制する期間を指定します |
| HSTS ポリシーをサブドメインに適用する | ON | すべてのサブドメインにもHSTSを適用します。 |
| プリロード | ON | サイトをHSTSプリロードリストに登録し、ブラウザが初回アクセス時からHTTPSを強制します。 |
| No-Sniff ヘッダー | ON | ラウザがContent-Typeヘッダーに従ってファイルを処理するように強制し、不正なファイルの実行を防ぎます。セキュリティを強化します。 |
以上でクライアント(ユーザーのブラウザ)とCloudflareのエッジサーバのやり取りにHSTSが適用されます。
上記のドキュメントはClodflareのCDNの解説資料の一部で全体像はCDNドキュメント一覧を参照して下さい。