カテゴリ

Apache OpenSSL

参照)
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証明書が利用できることを試せるはずです。

コメント

いただいたコメント
  1. […] + SSL 1つのIPアドレスで複数のコモンネームのSSL証明書を利用する(=SNI)。 さくらVPSにopensslインストールしてphpからhttps接続させる apache+mod_sslでSSL […]