中間証明書をどう設定するか問題
postfix
smtpd_tls_cert_file = /etc/letsencrypt/live/example.net/cert.pem
smtpd_tls_key_file = /etc/letsencrypt/live/example.net/privkey.pem
smtpd_tls_CAfile = /etc/letsencrypt/live/example.net/chain.pem
Let’s Encryptの場合こんな感じ
smtpd_tls_CAfileに中間証明書を指定する
smtpd_tls_cert_fileにfullchain.pemを指定するやり方はNG
dovecot
10-ssl.conf
ssl_ca = </etc/letsencrypt/live/example.net/chain.pem
これはダメ
この設定はクライアント証明書用ですので
正しくは、こんな感じに、まとめたやつを指定すればOK
ssl_cert = </etc/letsencrypt/live/example.net/fullchain.pem
apache
SSLCACertificateFileという設定はクライアント証明書用なのでここに入れない
SSLCertificateFile /etc/letsencrypt/live/example.net/fullchain.pem
dovecot同様に中間証明書もまとめて指定する
まとめ
この問題はスマホのK-9 Mailでメール読もうとしたときに判明した
(突然CertPathValidatorExceptionって怒られた)
thunderbirdでメール読んでた時には発生しなかったのでなんだろなーと思ったんだけどこっちは多めにroot証明書入ってるみたいね
サーバー設定後はこんな感じで中間証明書まで確認したほうが良いかも
openssl s_client -connect example.org:465 -showcerts
thunderbirdだけで確認すると痛い目を見るよと言うお話でした