名前ベースのバーチャルホストでSSLを使う(SNI)

名前ベースのバーチャルホストでSSLを使う(SNI)
あぱーブログ
2014年9月15日  カテゴリー:Linux WEB  タグ:
Pocket
LINEで送る

TLS拡張(RFC4366)仕様の一つ Server Name Indication(SNI)によって名前ベースのバーチャルホストでもSSLが使えますが、そもそもなぜ、名前ベースのバーチャルホストでSSLが使えないのかその理由と、SNIの仕組みと設定方法について調べてみました。

 

以前、WEBディレクターの方から、SSLを使っているサイトのバーチャルホストの設定依頼を受けて「SSL使ってるとバーチャルホストは使えないっすよ」とドヤ顔で答えてしまい、少し恥ずかしい思いをしました。(^^;)

昔の上司の言葉「常にアンテナを張っておけ!」を思い出します。

SNIの仕組み

SSLを使っていると当然ですがHTTPヘッダは暗号化されているので、クライアントがどのホスト名を指定しているのか判断できないため、先頭のバーチャルホスト(図の場合は lamp-sv)が表示されてしまいます。
SNIなし

 

SNIではSSL/TLSのやりとりの中で、暗号化していないホスト名をサーバに伝えてくれるので、指定したバーチャルホストを表示することができます。
SNIあり

SNIを使える条件

  • Apache 2.2.12以降
  • OpenSSL 0.9.8j以降
  • ブラウザがSNIに対応

ApacheとOpenSSLは最近のサーバなら対応することができますが、ブラウザの対応状況には注意が必要です。

Apache ssl.conf の設定サンプル

SNIに未対応のブラウザ用に「SSLStrictSNIVHostCheck」デレクティブを off にするのがキモです。

▽ SSLStrictSNIVHostCheck Directive
http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslstrictsnivhostcheck

 

以上です。

スポンサーリンク
Pocket
LINEで送る

名前ベースのバーチャルホストでSSLを使う(SNI)」への2件のフィードバック

  1. ピンバック: メモ20140917 | Nacky – Snowland.net

  2. ピンバック: 名前ベースのバーチャルホストでのSSL設定 | Linux | パソコン便利屋 SS-NET

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です