なぜサイトにHTTP→HTTPSのリダイレクトが必要か
HTTPSが使えても、サイトはHTTPのリクエストをHTTPSへ能動的にリダイレクトする必要があります。そうしないと、HTTP版に到達したユーザーは、暗号化されず傍受可能な接続のままになります。
これは何か
誰かが https:// を付けずに yourdomain.com と入力すると、ブラウザはまずHTTPを試します。あなたのサーバーがポート80でリダイレクトではなくコンテンツを返すと、そのページの読み込みは暗号化されません。
対策は、すべてのHTTP URLから、同じドメインの対応するHTTPS URLへの恒久的(301)リダイレクトです。
なぜ重要か
暗号化されていない通信は、ネットワーク経路上の誰か——公共Wi-Fi、侵害されたルーター、ISP——に読まれたり改ざんされたりする可能性があります。これには、フォームのデータや、Secure フラグのないCookieも含まれます。
誤ったドメインを指すリダイレクトや、何段も続くチェーンは、遅延を増やし、それ自体が設定ミスや乗っ取りの兆候であることもあります。
直し方
ポート80では、HTTPSへの単一の301で応答してください。
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}リダイレクトは最初の1ホップを処理します。HSTSはその後、以後のアクセスでHTTPを完全に飛ばすようブラウザに伝えます。両方を併用してください。
www/非www や末尾スラッシュの亜種を経由して跳ね回るのではなく、HTTPから正規のHTTPS URLへ1ホップで直接リダイレクトしてください。
FAQ
SSL証明書があれば十分ではないのですか?
いいえ。証明書はHTTPSを可能にしますが、リダイレクトがなければ、ユーザーは依然としてHTTP版を読み込めます。両方が必要です。
301と302のどちらのリダイレクトですか?
301(恒久)を使ってください。キャッシュ可能で、HTTPSが正規のバージョンであることをブラウザや検索エンジンに伝えます。