無償SSL署名書(Let’s Encrypt)で自動更新で失敗
無償SSL署名書のLet’s Encryptで自動更新で失敗していました。ログを確認すると以下のようなエラーとなっていました
$ sudo view /var/log/letsencrypt/letsencrypt.log Certbot failed to authenticate some domains (authenticator: webroot). The Certificate Authority reported these problems: Domain: example.com Type: unauthorized Detail: x.x.x.x: Invalid response from http://example.com/.well-known/acme-challenge/xxxxxxxxxxxxx: 404 # -------- 省略 -------- 2024-07-01 04:07:57,560:DEBUG:certbot._internal.error_handler:Calling registered functions 2024-07-01 04:07:57,560:INFO:certbot._internal.auth_handler:Cleaning up challenges 2024-07-01 04:07:57,560:DEBUG:certbot._internal.plugins.webroot:Removing /var/www/example/.well-known/acme-challenge/xxxxxxxxxxxxx 2024-07-01 04:07:57,560:DEBUG:certbot._internal.plugins.webroot:All challenges cleaned up 2024-07-01 04:07:57,561:ERROR:certbot._internal.renewal:Failed to renew certificate example.com with error: Some challenges have failed.
ログではファイル認証のファイルが失敗して、404のエラーコードが返ってきてSSL証明書の更新に失敗してようなログです
失敗したドメインですが、ドキュメントルートを少し前に変更したのを思い出しました。新旧のドキュメントルート配下となります
- 古いドキュメントルート:/var/www/example/
- 新しいドキュメントルート:/var/www/vhost/example/
Let’s Encryptの設定ファイル(/etc/letsencrypt/renewal/ドメイン名.conf)を確認するとやはり古いドキュメントルートになっていました。
- webroot_path = /var/www/example.com/,
- example.com = /var/www/xample.com/
$ cat /etc/letsencrypt/renewal/example.com.conf # renew_before_expiry = 30 days version = 2.11.0 archive_dir = /etc/letsencrypt/archive/example.com cert = /etc/letsencrypt/live/example.com/cert.pem privkey = /etc/letsencrypt/live/example.com/privkey.pem chain = /etc/letsencrypt/live/example.com/chain.pem fullchain = /etc/letsencrypt/live/example.com/fullchain.pem # Options used in the renewal process [renewalparams] account = a4b14675036cfd80f6202c969e5630c4 authenticator = webroot webroot_path = /var/www/example.com/, server = https://acme-v02.api.letsencrypt.org/directory key_type = rsa [[webroot_map]] example.com = /var/www/xample.com/
新しいドキュメントルートに変更すれば、Let’s Encryptで更新ができるはずです。古いドキュメントルートを新しいドキュメントルートに変更し、証明書を更新したところ、問題なく新しい証明書が発行されました。
以下の手順で設定ファイルを修正し、証明書を更新しました。
$ sudo vim /etc/letsencrypt/renewal/example.com.conf # 修正箇所 webroot_path = /var/www/vhost/example.com/, example.com = /var/www/vhost/xample.com/ # 証明書を更新 $ sudo certbot renew # Webサーバーを再起動 $ sudo systemctl restart httpd
ディスカッション
コメント一覧
まだ、コメントがありません