CentOS7 Apacheで複数の証明書

スポンサーリンク

従来の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

スポンサーリンク

シェアする

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

フォローする