この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
Let’s EncryptのSSL/TLS証明書を使ってWordPressの全面SSL化を行ったのですが、訳あって戻すことにしました。
Nginxの設定を戻し、「よし!これでOK」と思っていたのですが、Chromeからhttpアクセスすると何故か「httpからhttpsに強制的にリダイレクトされる事象」に遭遇・・・。
うーむ。これはおかしい。
Nginxの設定はどこをどうみてもhttp仕様になっているし、WordPressだって入れ直した。
もちろん、Chromeの履歴全削除とか、キャッシュ削除とかも試したみたけど効果なし・・・。
出来うる限りの手を尽くしたにも拘わらず、Chromeでhttpアクセスすると何故かhttpからhttpsに強制的にリダイレクトされる。
んー。一体、ナゼ?
なんでかなー?といろいろ探っているうちにhttp→httpsリダイレクトされる原因が分かりました。
原因は「HSTS」にありました。
Chromeでhttpからhttpsへ強制リダイレクトされる場合の対処法
そもそも「HSTS」 とは?
HSTSとは、「HTTP Strict Transport Security」の略称で、RFC6797で標準化されているらしい。
要は「一度、HTTPSで接続したドメインに対しては、以降HTTPで接続した際でも、強制的にHTTPSへリダイレクトし、以降のそのドメインへの接続はすべてHTTPSとする機能」というものらしい。
ithinkit
しかも、Chromeの場合は対象ドメインがブラウザにハードコーディングされるという。。。
ChromeでHSTSを削除するには
Chrome開いて、以下のURLへアクセスします。
chrome://net-internals/#hsts
すると、HSTS画面が開くので、
Delete domainに削除対象ドメインを入力して削除します。
すると、とりあえずhttpからhttpsへリダイレクトされることは無くなったが、画面が真っ白。。。
何が原因なのかは分からないけど、原因解明にはまだまだ時間がかかりそう・・・。
むやみやたらにHTTPS化なんてするもんじゃないね。
ちなみにURLを少し変えると画面が表示される。
ithinkit
Nginxへ以下の設定追加で解決!
Nginxの設定ファイルに以下の行を入れてあげれば表示させることが出来ました。
add_header Strict-Transport-Security "max-age=0; includeSubdomains";
そういや、SSL化するときにしれっと以下の設定を入れておいた気がしなくもない・・・。
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
意味も調べずに設定してしまうと、ほんとロクなことがない。
何にしても解決出来て良かった!
最悪、ドメイン取り直しかと思ったよ。。。
参考
http のリクエストが勝手に https にリダイレクトされるときは Strict-Transport-Security を疑おうべにやまぶろぐ
WordPressの全面SSL化、皆さんも気を付けましょう・・・。
(やると決めたら、やめないようにw)
ちなみにスマホのChromeのみ未だ解消されず。HSTSってホント参るわ。
まぁ、SafariとかGoogleとかのブラウザなら普通に見れるから別に良いけど・・・。
追記
Chromeをアンインストール、インストールすると復活することが判明しました!
対応出来るのは分かったけど、Chromeアンインストール/インストールする手間が惜しいな〜。
仕方ないんだろうけど、なんだかな~。
ithinkit
以上、あいしんくいっとでした(*´ω`)
Chrome起動時に表示される不要通知を無効化する方法 Chromeでの通知許可は要注意!クリックするとスパムのような通知が始まるよ Chromeを常にシークレットモードで開く方法