あけましておめでとうございます。
月虹製作 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
では、今年も頑張っていきましょう。