certbotのrenewコマンドで証明書を更新する場合、certbotが生成したファイルにリモート側からHTTPSアクセスすることでドメインの正当性が検証される。しかしながら、BASIC認証を設定しているとこの検証に失敗する。リモート側からアクセスがBASIC認証によって阻まれるから。
たぶん以下のようなエラーメッセージが表示される。
Challenge failed for domain your.domain.com Attempting to renew cert (your.domain.com) from /etc/letsencrypt/renewal/your.domain.com.conf produced an unexpected error: Some challenges have failed.. Skipping. All renewal attempts failed. The following certs could not be renewed: /etc/letsencrypt/live/your.domain.com/fullchain.pem (failure)
BASIC認証を解除するのもセキュリティ上はよくないので(たぶん必要だから設定していると思うので)、必要最小限の設定で切り抜けたい。
<Location /> AuthType Basic AuthName "Authentication Required" AuthUserFile /hoge/hoge/.htpasswd Require valid-user </Location>
ApacheならBASIC認証のためにこのような記述が*.confされている。Let’s encrypt (certbot)は/.well-knownへのアクセスを試みるので、そこへのアクセスのみBASIC認証を要求しないようにする。
そのためには、*.confに次の記述を追加する。
<Location /.well-known> Require all granted </Location>
あとはApache2を再起動してサイトの設定を反映すればOK。次からはcertbotが成功するはず。
*.confを書き換える代わりに.well-known内の.htaccessでBASIC認証を無効化する方法でも同じような対処ができる。
“BASIC認証でLet’s encryptの証明書の更新に失敗する” への1件のフィードバック
コメントは停止中です。