当方環境:
Apache2.2.15 + mod_ssl + openssl1.0.1
チェックリスト:
(1) SHA1でCSRを作っているため
(2) 鍵の長さが、2048ビット未満
(3) 中間証明書を指定し忘れている
(4) httpd.confの
・ conf全体のServerNameディレクティブ
・ バーチャルホスト設定部分のServerNameディレクティブ
が、同じドメイン名を指定していて
コンフリクトしている。
(5) Apache2.4.8以降では、中間証明書の扱いが変わるらしく
SSLCertificateChainFile は廃止される
今回ハマったのは、(4)でした。
バーチャルホストでいくらSSLCertificate類のディレクティブを
指定しても、一向に効きませんでしたが、その原因は
大元の(conf全体、バーチャルホストの外側)の、ServerNameが
優先して悪さをしていたっぽい。
参考: 設定後のhttpd.conf
・
・
ServerName dummy.hogehoge.jp:80
・
・
・中略
・
・
NameVirtualHost xxx.xxx.xxx.xxx:443
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:!RC4:!DH
SSLHonorCipherOrder On
<VirtualHost xxx.xxx.xxx.xxx:443>
SSLEngine on
ServerName hogehoge.jp
ServerAdmin webmaster@hogehoge.jp
DocumentRoot /var/www/html/hogehoge
CustomLog logs/access_log combined
ErrorLog logs/error_log
Options FollowSymLinks
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/2017.key
SSLCertificateChainFile /etc/httpd/conf/ssl.crt/2017.cer
SSLCertificateFile /etc/httpd/conf/ssl.crt/2017.crt
</VirtualHost>