本ブログのSSL証明書はLet’s Encryptで取得しているのですが、その更新処理ではまったのでメモです。症状としては、certbot renewコマンドを実行すると、Incorrect validation certificate for tls-sni-01 challengeと表示され更新に失敗します。
出力されるエラーメッセージ
コマンド入力後に帰ってくるエラーメッセージはこんな感じです。
Attempting to renew cert (74.pe) from /…/74.pe.conf produced an unexpected error: Failed authorization procedure. 74.pe (tls-sni-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Incorrect validation certificate for tls-sni-01 challenge. Requested XXXX.acme.invalid from 150.95.184.232:443. Received 2 certificate(s), first certificate had names “74.pe”. Skipping.
All renewal attempts failed. The following certs could not be renewed:
/…/fullchain.pem (failure)
原因と解決策
原因は環境によって異なるようですが、今回の場合は、certbotがStandaloneモードで動作しているのにも関わらず、既に80番ポートがnginxによって利用されていることが原因でした。更新の度にnginxを停止させるわけにもいかないので、webrootモードでの更新を試みました。より新しいバージョンのcertbot(≧0.9.0)の場合はnginxモードも利用可能なようです。
certbot renew --webroot -w ウェブサイトのトップディレクトリへのフルパス
結果、nginxを停止せずに証明書を更新することが出来ました(更新後の再起動は必要)。更新時にドメイン用のconfigファイルも更新されるため、次回以降はcertbot renewのみで動きます。
他に試したこと
- DNSサーバーのAエントリーが正しいかどうか確認
- サーバーを再起動して更新処理を再実行
- certbotを再インストール
cコメントを残す