2017年4月27日木曜日

HTTPSからHTTPサーバーに戻す方法(HSTS(HTTP Strict Transport Security)回避)

自分でSSL対応のWebサイトを運用していた方向けの記事です。
結論だけ書くと、.htaccessに下記の行を追加
Header always unset Strict-Transport-Security
Header add Strict-Transport-Security "max-age=0"
以上でHTTP通信ができるようになる。

詳細
近年のSSL普及の流れを受けて、自分のサイトをSSLに移行した方も多いのではないでしょうか。
しかしながら、その普及に大きく貢献していたStartComStartSSLが信用を失い、最新ブラウザからは弾かれて使い物にならなくなりました。

中国の認証局が不正な証明書、主要ブラウザが無効化を通告
http://www.itmedia.co.jp/enterprise/articles/1611/02/news082.html
(どうしてこうなった…)

そこで、Let'sEncryptに移行するか元のHTTPに戻すかという話になるのですが、Let's Encryptは有効期限が3か月しかなく、自動更新ができるユーザーでないと結構面倒です。

なので、HTTP運用に戻そうと思う方もいるでしょうが、サーバーによってはHTTPでアクセスしても強制的にHTTPSになってしまいます。.htaccessで強制していないにも関わらず強制的にHTTPSになってしまう場合、HSTSが有効になっている場合があります。

HSTSとは、一度でもhttpsでアクセスした場合、今後httpでアクセスしても、自動的にhttpsに転送するというブラウザの仕様で、これを無効化しないとHTTP通信に戻せません。
無効化するには、.htaccessファイルに上記の行を記載すれば、HTTP通信が許可され、HTTP通信に戻せます。

ちなみに、HTTPSからHTTPにリダイレクトするには、.htaccessに
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
</IfModule>
と記載。
しかしながら既にGoogleにHTTPSでインデックスされてしまうと少々厄介。
.htaccessファイルにアクセスする前に、ブラウザはHTTPSでサーバーに接続するため、その段階でStartSSLの証明書によりエラーになってしまう。
なので、301リダイレクトで早くHTTPの方にインデックスされることを祈りつつ、暫間的にLet'sEncryptでSSL設定をするしかないと思われる。
Let's EncryptのSSL証明書取得は、ネットオウルで行うのが一番簡単なため(他のレンタルサーバーを使ってようが、証明書の取得は無料でネットオウルで行える) 、ここでSSL証明書を取得して、自分の使っているレンタルサーバーでLet's EncryptのSSL設定をするのが良いと思われる。

参考ページ
Let’s Encryptの無料SSLサーバー証明書でhttpsサイト化
https://www.keypencil.com/2016/05/29/lets-encrypt-ssl/

0 件のコメント:

コメントを投稿