クライアント認証を利用するサイトの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
最終更新日