【運用管理】常時SSL+サブドメインのワナ? httpから勝手にhttpsになる場合
最終更新日: 2017/05/19 11:53am
<前提>
1.常時SSLのサイトがあり、そのサイトのサブドメインで別のサイト(常時SSL設定なし)を構築。
2.サブドメイン(常時SSL設定なし)にhttpでアクセスしてもhttpsでのアクセスとなってしまう。
<結論>
常時SSLを設定している側のサイトのsslの設定ファイル(Apacheのssl.conf等)内の「Strict-Transport-Security」の文字列を探し、その後ろに「includeSubDomains」の指定があったらその部分を消すと直るかもしれません。(設定変更後ブラウザのキャッシュもクリアしてみてください。)
※設定変更はご自身の責任で慎重にご実施ください。
(明示的に他のサブドメインを常時SSLに設定している場合などにご注意ください。)
運用担当の石川です。
最近はセキュリティの面のみならずGoogleの検索にも影響することもありホームページ全体を常時SSLに設定しているサイトが多数あります。
常時SSLのサイトを管理されている中で「マニュアルはメインサイトの負荷を軽減するためにサブドメインで別サーバーに」、「テストサイトはサブドメインでテスト環境を集約したサーバーに」というようなケースがあるかと思います。
その際にさらに「サブドメイン分まで証明書をあてる必要はないからサブドメインはhttpでアクセスしてもらおう」ということもないことはないかと思われます。
(書いていて限定されたケースだとは思いますがこれでハマりました。)
それではサブドメインは常時SSLにしないにはどうすればよいか、というとrewrite設定やCMSの場合はプラグインなどの設定で明確に「常時SSL」の設定をしなければ良いわけです。
当たり前だと言われると思いますがこのような状態で何故かいくら「http://~~~」と打ち続けても「https://~~~」となってしまう場合があります。
その場合このような怪しい画面となってしまうかもしれません。
社内のテストサーバーならまだしもとても外部の方には見せられません。
「WEBサーバーで常時SSL(https)になるような設定なんてしていないのに何で勝手にhttpsになるんだ!」とお困りのあなた。
1. 常時SSLに設定しているサイトがある
2. 1.のサブドメインが勝手にhttpsになってしまう
という条件が当てはまる場合は焦らずにWEBサーバーのsslの設定を見直してみてください。
ただし、勝手にhttpsになってしまうサブドメインのサーバーではなく常時SSLの設定を行っているサーバーの設定です。
そして設定ファイル内で「Strict-Transport-Security」の文字列の後ろに「includeSubDomains」がないかを探してください。
あったよ!という場合は「includeSubDomains」を削りWEBサーバーを再起動します。(Apacheの場合)
あわせてブラウザのキャッシュもクリアしてみてください。
※設定変更はご自身の責任で慎重にご実施ください。
(明示的に他のサブドメインを常時SSLに設定している場合などにご注意ください。)
<Apacheの設定例(ssl.confなど)>
Header always set Strict-Transport-Security "max-age=315360000; includeSubDomains"
↓ 変更
Header always set Strict-Transport-Security "max-age=315360000; "
上記は”HSTS”と呼ばれる「HTTPではなくHTTPSを使って!」とWEBサイトからブラウザに伝達するセキュリティ機能の設定です。
「includeSubDomains」オプションは文字の通りサブドメインも強制的にHTTPSにするというオプションのため、この設定にひっぱられて別サーバーにWEBサイトを構築した場合でもサブドメインを使用しているために意図せずhttpsでのアクセスとなってしまう場合があるようです。
HSTS(HTTP Strict Transport Security)についてはこちら(MDN)のサイトで詳しく説明されています。
上記のように設定されていても必ず同様の現象となるとは限りませんし、設定を変更しても必ず直るとは言えませんが同じトラブルにお困りの方のお役に立てたら幸いです。
←「「ホームページの先進事例」にAmazon Web Servicesの活用事例を掲載しました。」前の記事へ 次の記事へ「【ホームページ制作】先進事例に小江戸川越ハーフマラソン様の事例を追加しました。」→