Googleの推奨する常時SSL化で注意するべきこと。

あけましておめでとうございます。
月虹製作 CTOの浅川です。

 

年末年始、サーバをいじっていて、気がついた事を書きます。(暗いぞ)
なぜ気がついたがって事を説明すると、趣旨がわからなくなるのでそこは省略して、本論を書きます。

 

まず、2015/12/18日にGoogleウェブマスター向け公式ブログに
「HTTPS ページが優先的にインデックスに登録されるようになります」

という記事が掲載されました。
これ読んだ時に、微妙にイヤーな感じがしたのですが、どうもそれが的中した様な痕跡をみつけました。それを書いてると趣旨が飛ぶので省略します。

 

ようするにこの事によって何が起きるかというと。

複数のドメインを預かるサーバで問題がおきます。

 

技術的に理解している人なら。
HTTPSのデフォルトサーバがヤバイぞ! というだけで気がつくとは思います。

普通の人は、まず自分のサイトを
https:// でアクセスしてみてください。 その時、httpsできちんと表示されていればもちろん問題ありません。 またhttpにリダイレクトされるならそれも問題はありません。 しかし、もし違うサイトが表示された場合は、問題が起きる可能性があります。

その理由を説明します。

 

www.example.com

www.example.jp

www.example.org

 

という3つのFQDNを、同一IPアドレスで1つのサーバマシンで提供してるとします。

 

この時、それぞれのURLをきちんと指定した場合は、当然そのサイトが表示されますが。

IPアドレスで指定して場合に、なにも考えないで設定していると
設定した先頭のサイト、この場合 www.example.com の内容が、IPアドレスの指定で表示されます。

httpでのこの挙動は、実害はありません。

ところが、httpsでは問題がおきます。

 

www.example.com

www.example.jp

www.example.org

 

この3つのうち、www.example.jpだけが、httpsを提供しているとします。

すると
https://IPアドレス

https://www.example.com

https://www.example.org

このいずれも、www.example.jpの内容を表示する可能性があるのです。

 

今は存在しない事になっている、Windows XPのIEでアクセスした場合は、間違いなく、www.example.jpの内容が表示されます。

Windows Vista以降でも、サーバの設定次第では同様な事象がおきます。

設定によってはGoolgle様がその事なるサーバの内容をインデクスしてしまう可能性があります。(つまりそういうのを見つけちゃった)

そこで、どうすればいいのか?

 

「デフォルトサーバをきちんと設定する。」

 

という事です。

きちんとって何?

 

httpsのデフォルトサーバでは、httpへのリダイレクトを記述する証明書は、自己証明でいい。(Googleは、証明書とURLの一致を確認してない模様:確認してれば問題はおきない)

わたしは、最近nginxなので、サンプルもnginxで。

 

server {
listen *:80 default_server;

error_page 400 /dummy.html;
error_page 403 /dummy.html; error_page 404 /dummy.html;

root /usr/local/www/nginx;

}

server {
listen *:443 ssl default_server;

root /usr/local/www/nginx;

ssl_certificate default.pem;
ssl_certificate_key default.key;

return 301 http://$host$request_uri;
}

 

ついでですが、自己証明書の作成方法

openssl genrsa 2048 > default.key
openssl req -new -key default.key > default.csr openssl x509 -days 3650 -req -signkey default.key < server.csr > default.pem

 

では、今年も頑張っていきましょう。