SSL判定のA+を取るために安易にHSTSをONにしてはいけません。Webディレクターのお仕事ブログコンテンツへスキップWebディレクターのお仕事ブログメニューHOMEUI検討委員会このブログについてSSL判定のA+を取るために安易にHSTSをONにしてはいけません。A+を取るための設定方法といった記事が散見されますが、その中でも意味がわからずに設定すると事件が起きるHSTSの設定について書きます。Security)とは、簡単に説明するとこのサイトはSSL対応だから次からアクセスするときは直接httpsで接続しに来てねーとお知らせするWebサーバーの設定値です。URLで登録されていたとしても、ブラウザ側でhsts設定が1回目のアクセス時に記憶されて2回目以降のアクセスはhttpを使わずに、勝手にhttpsでアクセスするようになります。HSTSを設定する前にSSLの判定サイトでは、大抵HSTSがONになっていないと最高判定を取ることはできなくなっています。HSTSを設定しないと毎度httpでつなぎに行ってリダイレクトされてhttpsでのアクセスに切り替わるため、完全にセキュアとは言えません。HSTSをONにし、さらにpreloadをアクティブにすることで初回アクセスからhttpsを使用でき、よりセキュアになります。このHSTS設定には罠があり、かつ大体紹介されているキャッシュ期間が1年になるため、設置を間違えると1年間キャッシュが残るという悲惨な事件がおきてしまいます。プリロードをONにしよう!みたいな記事で、いきなり下記の設定をさせることがあります。preload"(Apacheの場合です)HSTS設定の罠はincludeSubDomainsです。その前にプリロードという仕組みをもう少しご紹介します。HSTSはそのままだと、初回1回だけはhttpでの通信となります。それをhttps化するために、このサイトはSSL対応ですよーリストにサイトを登録することができます。それがHSTSプリロードです。HSTSプリロードを利用するためには、いくつか条件がありますが、その中で、対象ドメインの全てがSSL化されていること、というものがあります。includeSubDomainsをつけることで、そのドメインのサブドメイン全てにHSTSを適用することになります。実際にサブドメイン全てがSSL化されていれば問題ありませんが、サブドメインの一部がSSL化されていない場合、上記設定を行うことでブラウザはhttpsでしかつなぎにいかなくなるので、サイトが閲覧できなくなります。31,536,000は秒なので、1年のキャッシュ期間となります。すべてのサブドメインがSSL化されていないサイトで上記設定を適用すると、サブドメイン側が1年間アクセスできなくなることになります。HSTSの設定は慎重にここまでHSTSのヤバさを書いてきましたが、決して設定するなと言っているわけではないです。HSTSはとても重要な設定で、Googleもオフィシャルに推奨しています。プリロードを設定してプリロードリストに登録することで中間者攻撃の可能性があるhttp通信をゼロにできます。max-age1年の設定を何も考えないで安易に適用することでネガティブキャッシュが発生する可能性があるため、設定は慎重に行わないといけないですよ、という話でした。infoご質問、ご要望などがあればTwitterからどうぞ@seamonkey_dさんをフォローお問い合わせフォームもあります。