Let’s Encryptの証明書がAndroidブラウザで信頼されなかった件

Pocket

Let’s Encryptで作成したSSL証明書をサイトにインストールしてから、Androidのブラウザで確認したらアドレスバーに表示される鍵アイコンが赤色になってました。

結論から言うとApacheの設定が間違っていて、中間証明書の記述が漏れてました。

間違い:

SSLCertificateFile /etc/ssl/example.com/cert.pem
SSLCertificateKeyFile /etc/ssl/example.com/private.key.nopass

正解:

SSLCertificateFile /etc/ssl/example.com/cert.pem
SSLCertificateKeyFile /etc/ssl/example.com/private.key.nopass
SSLCertificateChainFile /etc/ssl/example.com/chain.pem

よくある質問 – Let’s Encrypt 総合ポータル

Let’s Encrypt の証明書はブラウザで信頼済みとして扱われますか?

端的に答えると「イエス」です。
詳しく述べると、Let’s Encrypt の中間証明書は、広く信頼されている米大手認証局(CA)である IdenTrust のルート証明書によってクロス署名されています。
これにより、IdenTrust のルート証明書からチェーンされている限り、Let’s Encrypt の証明書は「信頼された証明書」として扱われます。そのため、IdenTrust のルート証明書を信頼しているほぼ全てのプラットフォームでは、Let’s Encrypt の証明書は「信頼された証明書」となります。

というわけで、SSLCertificateChainFileを設定しましょうということですね。
ちなみにApacheのバージョンが2.4.8以降ならばSSLCertificateFileディレクティブにfullchain.pemを設定すればOKとのことです。
その場合はこういう記述になるはずです。

SSLCertificateFile /etc/ssl/example.com/fullchain.pem
SSLCertificateKeyFile /etc/ssl/example.com/private.key.nopass

ブラウザが証明書の検証結果をキャッシュしているようで、サーバの変更後すぐには確認できませんでしたが、10分くらい待って再確認するときちんと信頼られた証明書として確認できました。

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です