あけましておめでとうございます。
月虹製作 CTOの浅川です。
年末年始、サーバをいじっていて、気がついた事を書きます。(暗いぞ)
なぜ気がついたがって事を説明すると、趣旨がわからなくなるのでそこは省略して、本論を書きます。
まず、2015/12/18日にGoogleウェブマスター向け公式ブログに
「HTTPS ページが優先的にインデックスに登録されるようになります」
という記事が掲載されました。
これ読んだ時に、微妙にイヤーな感じがしたのですが、どうもそれが的中した様な痕跡をみつけました。それを書いてると趣旨が飛ぶので省略します。
ようするにこの事によって何が起きるかというと。
複数のドメインを預かるサーバで問題がおきます。
技術的に理解している人なら。
HTTPSのデフォルトサーバがヤバイぞ! というだけで気がつくとは思います。
普通の人は、まず自分のサイトを
https:// でアクセスしてみてください。 その時、httpsできちんと表示されていればもちろん問題ありません。 またhttpにリダイレクトされるならそれも問題はありません。 しかし、もし違うサイトが表示された場合は、問題が起きる可能性があります。
その理由を説明します。
という3つのFQDNを、同一IPアドレスで1つのサーバマシンで提供してるとします。
この時、それぞれのURLをきちんと指定した場合は、当然そのサイトが表示されますが。
IPアドレスで指定して場合に、なにも考えないで設定していると
設定した先頭のサイト、この場合 www.example.com の内容が、IPアドレスの指定で表示されます。
httpでのこの挙動は、実害はありません。
ところが、httpsでは問題がおきます。
この3つのうち、www.example.jpだけが、httpsを提供しているとします。
このいずれも、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
では、今年も頑張っていきましょう。