クライアント認証を利用するサイトのLet's Encrypt発行SSL証明書の更新
クライアント認証を利用するサイトのLet's Encrypt発行SSL証明書の更新
火, 1月 21, 2025
やりたいこと
- クライアント認証がかけられているサイトのSSL証明書を自動更新する
- SSL証明書はLet’s Encryptで発行し,certbotで自動更新する
- Webサーバーはnginxを使う
自動更新の失敗
設定からしばらくして自動更新が失敗しているcertificateがあることに気づく.
$ sudo certbot renew
...
Failed to renew certificate XXX with error: Some challenges have failed.
...
XXX
は対象ドメイン.
このドメインはクライアント認証を設定し, すべてのhttpアクセスをhttpsへリダイレクトしている そのため,HTTP-01 challengeに失敗していると思われる.
Nginxの設定
HTTP-01 challengeで利用するhttp://XXX/.well-known/acme-challenge/
以下のみをhttpsへリダイレクトさせないようにする.
server {
listen 80;
server_name XXX;
location /.well-known/acme-challenge/ {
alias /PATH/.well-known/acme-challenge/;
}
location / {
return 301 https://$host$request_uri;
}
}
PATH
はルートディレクトリ.
更新の確認
とりあえず--dry-run
オプションをつけて更新がうまくいくかを確認する.
うまくいけば実際に更新するか,自動更新を待てばよい.
sudo certbot renew --dry-run
最終更新日