プリロードHSTS (Preload HSTS) の登録方法

Apache HTTP ServerでのプリロードHSTSの登録方法を記す。元々,「Apache HTTP Serverでの常時SSL/HTTPS化の設定」に掲載予定だった内容を文量が多くなったのでこちらに分離した。

概要

HSTSにより次回以降のHTTPアクセスを回避できるが,どうしても初回のHTTPアクセスを回避できない。HSTSは,一度HTTPSのページにアクセスして,HSTSヘッダーを受け取ってから初めて機能するからだ。

この初回のHTTPアクセスを回避するための仕組みとして,プリロードHSTS (Preload HSTS) が存在する。これはWebブラウザーに事前にHSTSで接続するドメインのリストを持つことで,初回アクセスからHSTSによるHTTPSアクセスを実現する。元々は,Google Chromeだけの仕組みだった。しかし,その後他の主要なWebブラウザー (Firefox, Opera, Safari, IE11, Edge) もChromeのリストを持つようになった。

このプリロードHSTSは,専用サイト (HSTS Preload List Submission) からドメインを申請・登録することで実現できる。

条件

申請にあたって,サイトに掲載されている通り,以下の条件が課せられている。

プリロードHSTSの申請条件
  • 有効な証明書を提供
  • HTTPからHTTPSへリダイレクト済み
  • 全サブドメインをHTTPSで提供
    • 特に,wwwサブドメイン
  • ベースドメインのHSTSヘッダーに以下を指定
    • max-age31536000 s (1年) 以上の期間を指定
    • includeSubDomainsを指定
    • preload指令を指定
    • HTTPSサイトから追加のリダイレクトを提供する場合,リダイレクトもHSTSヘッダーを持つこと

Apache HTTP Serverでの常時SSL/HTTPS化の設定」で事前に用意したhttpd.confまたは.htaccessはこの条件を満たすように設定している。

申請前に,この設定を常時HTTPS化したいベースドメインに適用しておく。レンタルサーバーなどでは,.htaccessに用意した内容を追記して対応する。

手順

設定が済めば,後は専用サイトから申請するだけだ。具体的な手順を記す。

1. 「HSTS Preload List Submission」にアクセスする。

2. [Enter a domain:] にプリロードHSTSに登録したいドメイン (例: senooken.jp) を入力して [Check HSTS preload status and eligibility] を選ぶ。

3. 問題なければプリロードHSTSの提出確認画面が表示される。登録するドメインの所有者が自分であることと,全サブドメインがHTTPSでのアクセスが必須になることの確認が表示荒れている。問題なければ,以下の両方にチェックをして [Submit senooken.jp to the HSTS preload list] を選ぶ。

  • ☑ I am the site owner of senooken.jp or have their permission to preload HSTS. (If this is not the case, senooken.jp may be sending the HSTS preload directive by accident. Please contact hstspreload@chromium.org to let us know.)
  • ☑ I understand that preloading senooken.jp through this form will prevent all subdomains and nested subdomains from being accessed without a valid HTTPS certificate: *.senooken.jp *.*.senooken.jp …

Success

senooken.jp is now pending inclusion in the HSTS preload list!

Please make sure that senooken.jp continues to satisfy all preload requirement, or it will be removed. Please revisit this site over the next few weeks to check on the status of your domain.

Also consider scanning for TLS issues using SSL Labs.

4. 申請の完了画面が表示される。これで完了となる。

後は,WebブラウザーのプリロードHSTSリストが更新されるのを待つだけだ。

失敗例

初回に2の [Check HSTS preload status and eligibility]を選んだ際に,以下のエラーが出てしまった。

Status: senooken.jp is not preloaded.

Eligibility: In order for senooken.jp to be eligible for preloading, the errors below must be resolved:

Error: www subdomain does not support HTTPS

Domain error: The www subdomain exists, but we couldn't connect to it using HTTPS ("x509: certificate is valid for *.coreserver.jp, coreserver.jp, not www.senooken.jp"). Since many people type this by habit, HSTS preloading would likely cause issues for your site.

今回登録予定のsenooken.jpはいくつかサブドメインで運用しているが,wwwのサブドメインだけは運用していなかった。

エラー内容から判断するに,どうやらwwwのサブドメインは特別扱いで,実際に運用していなくても用意しておく必要があるようだ。

そこで,空のサイトを用意したところエラーが解消された。senooken.jpのサイトのHSTSヘッダーでincludeSubDomains指定しているから,サイトの中身が空でも問題ない。Webサイトにアクセスできなくても存在することが大事なようだ。

結論

Apache HTTP ServerでのプリロードHSTSの登録方法を記した。

申請自体はボタンを押すだけで簡単だ。しかし,事前にApacheなどのサーバーの設定が必要なのがなかなか厄介だ。

また,初回登録時にwwwサブドメインの想定していないエラーが出てしまい行き詰まった。試行錯誤の上なんとか登録できた。

次回別のサイトで常時HTTPS化の設定を行う際は,ここに記した内容を参考にスムーズに進めたい。

aa

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です