2015年5月18日月曜日

Apache の名前ベースバーチャルホストによる SSL (SNI)

かつて SSL は名前ベースのバーチャルホストでは運用できないとされていたが、今はそのための規格やサーバ、対応クライアントの普及もあって、まあ使える。

もちろん対応していないクライアントもまだまだ残っていて、商用では「使えない」とされるのかもしれないけれど、それは置いておこう。

その規格は SSL/TLS の拡張仕様で SNI (Server Name Indication) と呼ぶらしい。 Apache 2.2 系などで使えて、"NameVirtualHost *:443" とすると有効になる。

あとは "<VirtualHost *:443>" ~ "</VirtualHost>" の間にディレクティブを記述すればよい。通常の名前ベースのバーチャルホストと同様だ。

ただ、HTTP でリクエストされたホスト名がバーチャルホスト定義のどこにもマッチしないときは、先頭のバーチャルホスト定義がデフォルトとして使われる、かと思ったがどうも違うようだ。

ホストがマッチしない時は元から入っている "<VirtualHost _default_:443>" の定義が使われているようであるし、DocumentRoot はグローバルに記述したところが有効になっているようだ。

:80 の場合と設定が有効になるルールが異なっているような気がするのだが、どうなんだろう。

0 件のコメント :

コメントを投稿