参照)
http://e-garakuta.net/techinfo/doku.php/linux/apache-sni
http://builder.japan.zdnet.com/etc/20402262/
http://slashdot.jp/journal/495893/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%AESNI%E5%AF%BE%E5%BF%9C
あたり。
1つのIPアドレスで複数のコモンネームのSSL証明書を利用することは、従来できずSSLを有効にするためだけのために、バーチャルホストごとに別のIPアドレスを用意して充てることも多かったのですが、
- Apache httpd 2.2.12以降
- OpenSSL 0.9.8f以降
の組み合わせであれば SNI(Server Name Indication) というSSLプロトコルの拡張仕様が利用できるようになったため、1IPアドレス・複数コモンネームが実現できるようになりました。
※ただし、ブラウザ側の対応も必要。
※ただし、普通に使っているブラウザであればほとんど対応済み。
すでにディストリビューション側のパッケージでも対応しているものもあるみたいですが、opensslをソースインストールする場合、config オプションで enable-tlsext を追記する必要があります。
CentOS であれば例えばこんな感じ。
cd (openssl のソースディレクトリ) ./config enable-tlsext -fPIC shared make make test make install echo /usr/local/ssl/lib > /etc/ld.so.conf.d/openssl.conf ldconfig
その上でhttpdのコンパイルオプションでopensslのパスを上記のソース版のopensslのインストールパスを指定することで、SNIが有効になります。
自分がいつも使うのはこんな感じ。
なお、apr/apr-util についてはソースインストールしています。
./configure \ --with-apr=/usr/local/apr/ \ --with-apr-util=/usr/local/apr/ \ --enable-proxy \ --enable-proxy-balancer \ --enable-rewrite \ --enable-alias \ --enable-headers \ --enable-expires \ --enable-module=so \ --enable-so \ --enable-shared=max \ --enable-dav=shared \ --enable-dav_fs=shared \ --enable-ssl \ --with-ssl=/usr/local/ssl
後はhttpdのVirtualHostの設定でいくつか設定すれば1つのIPアドレスで複数のコモンネームのSSL証明書が利用できることを試せるはずです。
[…] + SSL 1つのIPアドレスで複数のコモンネームのSSL証明書を利用する(=SNI)。 さくらVPSにopensslインストールしてphpからhttps接続させる apache+mod_sslでSSL […]