BLOGTIMES
2007/07/07

SSLでName Based Virtual Hostをするには

  httpd  ssl 
このエントリーをはてなブックマークに追加

もう4年位前になりますが、あるサイトのリリース前夜にSSLでName Based Virtual Hostを設定しようとしていてはまっていたエンジニアにそれができないことを教えてあげて、とても感謝されたということがありました。この件は今でも飲み会などでネタになるくらいの出来事だったので、自分自身にもそれが成功体験として残ってしまっていて「SSLでName Based Virtual Hostは使えない」とステレオタイプに考えてしまっていたんですがその知識はどうやら正確ではなかったようです。

Web Security Memo: 名前ベースのVirtualHostでそれぞれのSSLサーバ証明書を使う」ではまさにこの問題が論じられていて、これによると下記の3つの方法でSSLでName Based Virtual Hostを行うことができるようです。

・ワイルドカード証明書を使う
・subjectAltNameを使う
・Server Name Indication (SNI)を使う

とりあえずワイルドカード証明書については知っていたんですが、後の2つについては恥ずかしながら知りませんでした。エンジニアは常に継続学習が必要であることを痛感させられます。ちなみに最後のSNIについては以下のような解説がなされています。

Web Security Memo: 名前ベースのVirtualHostでそれぞれのSSLサーバ証明書を使う

* Server Name Indication (SNI)を使う

この方法が一番自然。共有サーバでも使えるはずです。
TLSに対する拡張仕様であり、RFC 3546で規定されています。TLSのネゴシエーションの最初に、クライアント側から「ClientHello」を投げるのですが、このタイミングで、接続しようとしているホスト名を教えてあげます。これにより、サーバ側は、どのサーバ証明書をクライアントに返せばよいかを知ることができます。
SNIをサポートしているクライアントは、Opera、IE7、Firefox 2 です。

どうやら新しいクライアントはこれに対応しているようですから、これから徐々にこういう形にシフトしていくんでしょうね。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/2091
    Trackbacks
    Name Based Virtual Hostの時は全てにSSLは無理かと思いきや、解決策が。しかも三つも!わかってみれば「なるほどねー」って感じだけど、結構ハマりそうだったので助かった。。。
    trash (2007/07/20 15:03)
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン