中間証明書(CA証明書)の設定漏れで、Let’s EncryptのSSL証明書が期限切れエラーになった話

IT技術

はじめに

こちらの記事にもあるように、2021/09/30にLet’s Encryptのルート証明書変更・古いルート証明書の期限切れになったことで、筆者のサイトでも証明書期限切れエラーが発生した。

本記事では、発生した事象と原因・対策について記載する。

システム環境

Let’s Encryptで取得したSSL証明書をOracle Cloudのロードバランサ(LB)に登録し、HTTPS暗号化している。

発生した事象

Let’s Encryptがルート証明書を変更した2021/09/30以降、サイトにアクセスすると以下のような証明書期限切れエラーが発生するようになった。

 この接続ではプライバシーが保護されません
  NET::ERR_CERT_DATE_INVALID

新しいルート証明書が使用しているPCにない?とも考えたが、確認すると存在した。
また、なぜかChromeブラウザのシークレットモードでアクセスすると証明書エラーは出ず、正常にアクセスできた。

原因・対策

原因は、Oracle Cloud LBに登録しているSSL証明書の登録に不備があった。
「SSL証明書」と「秘密鍵」は登録していたが、「中間証明書(CA証明書)」の登録がされていなかった。

「中間証明書(CA証明書)」が登録されていなかったため、証明書チェーンを正しく認識できず、古いルート証明書が使われてしまったと思われる。

対策として、「SSL証明書」と「中間証明書(CA証明書)」、「秘密鍵」を全て登録した。
Let’s EncryptでSSL証明書を取得すると、以下のようなファイルが作成される。

[root]# ls -1
README
cert.pem ・・・ (1)SSL証明書
chain.pem ・・・ (2)中間証明書(CA証明書)
fullchain.pem
privkey.pem ・・・ (3)秘密鍵
[root]#

上記ファイルをOracle Cloud LB「証明書の追加」ページで、各項目に設定する。

登録し直したSSL証明書を使用するよう、LBリスナー設定を変更した。

以上の対応により、証明書エラーは発生せず、正常にアクセスできるようになった。

まとめ

一口にSSL証明書といっても様々な種類がある。
それぞれの役割をしっかり理解しておくことで、今回のようなエラーの早期解決に繋がる。

この辺りの技術は奥が深い・・まだまだ勉強不足なので勉強しよう。

参考にさせて頂いたサイト

タイトルとURLをコピーしました