古い端末しか影響を受けない理解だったのだけど、 なぜかとあるサイトが最新のChrome(やEdge、Safari)でも駄目だった。
※ なお、Firefoxは問題なし
証明書情報を見ると確かに「DST Root CA X3」がルートになっており、 期限切れ扱いになる。
そのサーバーには他のドメインも相乗りしていて、 それらは正しく「ISRG Root X1」が使われていた。
証明書を強制更新してみても駄目。全部削除して発行し直しても変わらず。
HTTPサーバー(Apache 2.2)設定の問題か?ということで他のドメインとの比較してみると違いがあった。
駄目な例
1
2
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
大丈夫な例
1
2
3
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
fullchain.pemがおかしいのかと中身を見てみたが、 ちゃんと「example.com → R3 → ISRG Root X1」になっていると思うのだが…ということで原因ははっきりせず。
ひとまず解消してよかった。(今日お休みだったのに……)
[追記]
古いApacheでは SSLCertificateFile
にfullchainを指定してもうまく処理してくれない模様。
で、サーバー証明書だけが送られてきてOSが検証するChrome/Edge/Safariが駄目になり、独自に検証しているFirefoxだけは通ったという感じか。
マニュアル見ると↓になっているので、サーバー証明書以外を含むことも想定されているっぽいんだけどな。
At a minimum, the file must include an end-entity (leaf) certificate.
https://httpd.apache.org/docs/2.2/en/mod/mod_ssl.html#sslcertificatefile