はじめに
こちらの記事にもあるように、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証明書といっても様々な種類がある。
それぞれの役割をしっかり理解しておくことで、今回のようなエラーの早期解決に繋がる。
この辺りの技術は奥が深い・・まだまだ勉強不足なので勉強しよう。