従来のApacheでは1サーバ(1IP)につき、1つの証明書しか持たせることができず、複数持たせようと思うと1サーバに複数のIPをもたせて、それぞれに署名書を紐付かせる必要がありました。
これが現在Apache2.2以降ではSNI(Server Name Indication)という機能が実装され、1IPでも複数の証明書を利用できるよう改良されております。
設定方法も極めてシンプルで/etc/httpd/conf.d/ssl.confに証明書の枚数分だけ以下の記述を追記していけばOKです。
NameVirtualHost *:443 <VirtualHost *:443> ServerAdmin webmaster@unix-power.net DocumentRoot /home/unixpower/html ServerName www.unix-power.net ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log LogLevel warn SSLEngine on SSLProtocol all -SSLv2 -SSLv3 SSLCertificateFile /etc/httpd/conf/certs_unix/www.unix-power.net.cer SSLCertificateChainFile /etc/pki/tls/private/unix-power.net.cer SSLCertificateKeyFile /etc/httpd/conf/certs_unix/www.unix-power.net.pem </VirtualHost> |
上記のSNIの機能は古いブラウザだと正常に閲覧できない可能性もあるので追加の設定として以下の記述がある方が望ましいと思われます。エラーを返さずに最初に定義されたSSLサイトで応答するための設定です。
記述場所はNameVirtualHost *:443の下あたりに記述しておくと良いです。
SSLStrictSNIVHostCheck off |
正常にSSLで閲覧できるかはブラウザで直接見れば良い話ですが、コマンドベースでも可能なので以下にサンプルを記述いたします。
# echo -en 'GET / HTTP/1.1\nHost: www.unix-power.net\n\n' | openssl s_client -connect www.unix-power.net:443 -servername www.unix-power.net |