全ページをHTTPSアクセスにしてWeb サイトの安全性を確保するためには、サーバー証明書が正しく設定され混在コンテンツ対策が完了した後にも行わなければならないことがあります。
それが、リダイレクトとHSTSです。
すべてのコンテンツがHTTPS接続で表示されるように設定されても、80番ポートは閉じないようにします。
ブラウザは、URLバーに example.com と入力された場合、一般に http://example.com/ に接続(HTTP接続)しようとします。
また、古いリンクデータで http://example.com/ がどこかに残っているかもしれません。
80番ポートを閉じてしまうと、こうしたアクセスがすべてページが見つからないというエラーになります。
そこで、80番ポートを閉じる代わりに、HTTPアクセスをHTTPSに導く、リダイレクト設定を行います。
Apacheでは、confファイルの example.com ドメインの80番設定部分に以下のような記述を行うことで、該当ドメインへのすべての http://example.com アクセスを https://example.com にリダイレクトできます。
IIS7.0以降の場合、URL Rewrite Moduleを使ってリダイレクト設定ができます。
その場合、web.configファイルには以下のように記載されます。
すべてのコンテンツがHTTPS接続で表示されるように設定され、HTTPアクセスがHTTPSにリダイレクトするよう設定されていても、最初にHTTPでアクセスした時点で攻撃者がユーザーのCookieを傍受し個人情情報を収集したり、フィッシングサイトへリダイレクトしたりする可能性があり、セキュリティ上の問題が残ります。
こうした危険を減らすことができるのがHSTSです。
HTTP Strict Transport Security(HSTS)は、ブラウザに対して常にHTTPS経由でWebサイトに接続するよう指示します。
HSTSを設定すると、URL入力時に意図的に http:// を指示しても、ブラウザはHTTPS接続を行います。
Apache、nginxでは、confファイルのドメインの設定部分に以下のような記述を行うことで、HSTSを有効にできます。
IISの場合、[カスタム HTTP 応答ヘッダーの追加]ダイアログの[名前]テキストボックスに、「strict-transport-security」を入力します。
その後、[値]のテキストボックスにmax-age=(有効期間秒数 例:31536000)を入力します。
IIS7.0以降の場合、web.config ファイルに以下のような、Strict-Transport-Security ルールの追加設定ができます。
IIS10 1709からは、サイトごとの設定が可能になりました。
詳細はMicrosoftのページを確認してください。
「preload」を指定すると、HSTS Preloadリストに登録され、Chrome、Firefox、Opera、Safari、IE 11、Edgeで最初のアクセスからHTTPSプロトコルとなり、安全性を確保できます。
しかし、登録完了日が保証されませんので、急ぐ場合は直接、HSTS Preload List Submissionに登録します。
以下が登録方法の概要です。