-100p

-10p

+10p

+100p

SSL証明書自動更新の失敗時の対応

Let's EncryptのSSL証明書自動更新の失敗時の対応。
/etc/letsencrypt/renewalのconfファイルからwebroot_pathの修正。
jksファイルの再更新。

関連ページ 参考URL
Let's EncryptのSSL証明書は3ヵ月で有効期限が切れるものの、最近のLet's Encryptは初期設定で自動更新が有効になってる。
しかしなぜか更新が失敗してしまう。よく見てみると自動更新の設定が間違っていた。

webroot_pathの修正

Let's Encryptは自動更新機能があるので完全に安心していたが、英語勉強サイトの方で下のような警告メールが送られてきた。
Hello,

Your certificate (or certificates) for the names listed below will expire in 19 days (on 2023-12-08). 
Please make sure to renew your certificate before then, or visitors to your web site will encounter errors.

We recommend renewing certificates automatically when they have a third of their total lifetime left. 
For Let's Encrypt's current 90-day certificates, that means renewing 30 days before expiration. 
See https://letsencrypt.org/docs/integration-guide/ for details.

english-everyday.top

そんな馬鹿なと思い、サーバにアクセスして下の手動更新コマンドを打ち込んでみた。
sudo certbot renew
結果は下の通り。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/
 [confファイル名] 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator webroot, Installer None
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for english-everyday.top
Using the webroot path 
 [tomcatのディレクトリ] 
/webapps/ROOT for all unmatched domains.
Waiting for verification...
Challenge failed for domain english-everyday.top
http-01 challenge for english-everyday.top
Cleaning up challenges
Attempting to renew cert (english-everyday.top) from /etc/letsencrypt/renewal/
 [confファイル名] 

produced an unexpected error: Some challenges have failed.. Skipping.


確かにエラーっぽい赤い文字が表示されている。
英語なんでパッと内容が入ってこないが、よく見ると
Using the webroot path 
 [tomcatのディレクトリ] 
/webapps/ROOT for all unmatched domains.
とはっきりエラー理由が書いてあった。

指定通り、
 /etc/letsencrypt/renewal/ 
の下にあるenglish-everyday.topのconfファイルにアクセスしてみる。
webroot_path = 
 [tomcatのディレクトリ] 
/webapps/ROOT,
たしかにpathの最後がROOTになっていて間違っている。
昔は英語勉強サイトしか運営してなかったのと、リバースプロキシによるサイトURLの短縮方法を知らなかったので、ROOTディレクトリにファイルを突っ込んでいた。 今はROOTディレクトリは使っていないのでここを修正。

再び手動更新コマンドを打ち込んでみる。結果は下の通り。
Congratulations, all renewals succeeded. The following certs have been renewed:

これで一安心。
と思ったが、久しぶりにサイトを訪問してみるとサイトが500: Internal Server Errorで繋がらなくなっていた。
考えてみれば当然で、証明書が自動更新されても、その証明書を元にjksファイルを再度作成しないと意味がない。
sudo opensslとsudo keystoreを使い、jksを更新して修正完了。

もしくは 次ページ 紹介のrenewal-hooksを使うことで、証明書の更新の直後にjksの自動更新も可能になっている。
0
0

-100p

-10p

+10p

+100p