【apache】SNI(Server Name Indication)でSSLをVirtual Hostsでも
SNI(Server Name Indication RFC 4366)を使えば、一つのIPアドレスで複数のサイトのSSLを実現することが可能になる。名前ベースのバーチャルホストでSSLを使えるようにする技術。
SNIが使える条件
まず、Apacheが2.2.12以降であること。SSLStrictSNIVHostCheck ディレクティブは2.2.12以降で使える。
他こまかいところ。
- OpenSSL 0.9.8f以降。
- OpenSSLがTLS拡張オプションありでビルドされていること(enable-tlsext)。OpenSSL 0.9.8k以降はデフォルトで有効。
- ApacheがOpenSSL付きでビルドしてあること(./configure –with-ssl=/path/to/your/openssl)。これでmod_sslはSNI対応に。
- ApacheがOpenSSLライブラリを利用できるように設定すること(envvarsでLD_LIBRARY_PATHの設定など)。
もちろんブラウザもSNIをサポートしていること。大体大丈夫そうだけど、WindowsXPが対応していないのが問題。
- Mozilla Firefox 2.0以降
- Opera 8.0以降(要TLS 1.1)
- Internet Explorer 7.0以降で、OSがVista以降(XPはだめ)
- Google Chrome
- Safari 3.2.1 @ Mac OS X 10.5.6
設定例
# Ensure that Apache listens on port 443 Listen 443 # Listen for virtual host requests on all IP addresses NameVirtualHost *:443 # Go ahead and accept connections for these vhosts # from non-SNI clients SSLStrictSNIVHostCheck off <VirtualHost *:443> # Because this virtual host is defined first, it will # be used as the default if the hostname is not received # in the SSL handshake, e.g. if the browser doesn't support # SNI. DocumentRoot /www/example1 ServerName www.example.com # Other directives here </VirtualHost> <VirtualHost *:443> DocumentRoot /www/example2 ServerName www.example2.org # Other directives here </VirtualHost>
コメント