プリロードHSTS (Preload HSTS) の設定

web/server

前回の「Apache HTTP Serverでの常時HTTPS化の設定 | GNU social JP」で残したプリロードHSTSの設定方法を記します。

概要

HSTS (HTTP Strict Transport Security) により次回以降の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での常時HTTPS化の設定 | GNU social JP」で事前に用意した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.

wwwのサブドメインでのHTTPS化未対応のエラーとなっています。

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

そこで,空のサイトを用意したところエラーが解消されました。wwwのないベースドメインのサイトのHSTSヘッダーでincludeSubDomains指定していますので、サイトの中身が空でも問題ありません。Webサイトにアクセスできなくても存在することが大事なようです。

結論

プリロードHSTSの登録方法を記しました。

前回の「Apache HTTP Serverでの常時HTTPS化の設定 | GNU social JP」と合わせることで、サイトの常時HTTPS化が完成となります。

プリロードHSTSの申請自体はボタンを押すだけで簡単です。事前のサーバーの設定のほうが知識が必要で難しいと思います。

手順さえわかれば簡単で、一度設定すればおしまいですので、サイト設置時には是非設定してみましょう。

コメント

  1. […] HSTSの設定はフォームから申請するだけですので簡単です。ただし、画像付きで説明すると分量が多くなるため、別の記事「プリロードHSTS (Preload HSTS) の設定 | GNU social JP」にしています。 […]

Copied title and URL