ふと OpenSSL で証明書の検証がどうなってるかをチェックしてみた。
% openssl s_client -connect localhost:443 -showcerts < /dev/null
(省略)
Verify return code: 21 (unable to verify the first certificate)
はい?
しかも Certificate chain が 1つしか出てこない。
おかしいと思ってぐぐってみると、どうも httpd-ssl.conf で SSLCertificateChainFile に中間証明書を指定しなければならないらしい。
というわけで
SSLCertificateFile "/usr/local/apache2/conf/ssl.crt/cert.pem"
SSLCertificateChainFile "/usr/local/apache2/conf/ssl.crt/chain.pem"
SSLCertificateKeyFile "/usr/local/apache2/conf/ssl.key/privkey.pem"
と指定して再起動してから openssl を叩いてみたら無事に "Verify return code: 0 (ok)" となった。
ちなみに Postfix は smtp_tls_CAfile に中間証明書を指定する。
proftpd は TLSCACertificateFile に中間証明書を指定する。
参考:
% openssl s_client -connect localhost:443 -showcerts < /dev/null
% openssl s_client -connect localhost:25 -starttls smtp -showcerts < /dev/null
% openssl s_client -connect localhost:110 -starttls pop3 -showcerts < /dev/null
% openssl s_client -connect localhost:143 -starttls imap -showcerts < /dev/null
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ G兄
└ 山銀
└ G兄