Let’s Encryptの自動更新で失敗する原因と対処法【wordpress・cakephp】

自動更新で失敗する原因は主に2つ。
1.認証用ファイルが作成できない
2.認証用ファイルをWEB上で確認できない

対策としては2つ。
1.ルートティレクトリ上に「.well-known/acme-challenge」ディレクトリを作る。
例)
mkdir /var/www/htm/.well-known
mkdir /var/www/htm/.well-known/acme-challenge

2.「.well-known/acme-challenge/xxxxxxxx(認証用ファイル)」をWEB上で公開可能にする。
例)
#nginx.conf
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
}

以上

以下、知識として

前提知識として「Let’s Encrypt」は、証明書更新時に、ドメインの所有者を確認しています。
具体的な方法としては、更新処理の中で、公開ディレクトリに認証用ファイルを作成して、それを外部から見れたら、ドメインの所有者だと確認できるという訳です。

「認証用ファイルが作成できない」について

コマンドのオプションでも対応可能。
「.well-known/acme-challenge」ディレクトリが不要になる。
/usr/bin/certbot/certbot-auto renew --webroot -w /var/www/html/

「認証用ファイルをWEB上で確認できない」について

wodpressやcakaphpを利用しているドメインで起きる。
URL書き換えルールが原因(apacheならhtaccess、nginxならnginx.conf)

「.well-known/acme-challenge/xxxxxxxx(認証用ファイル)」をWEBで閲覧できるようにする。
認証用ファイル名は毎回異なる。
ディレクトリ単位で閲覧できるようにする。

エラー出力例

エラー出力例
Attempting to renew cert (xxx.net) from /etc/letsencrypt/renewal/xxx.net.conf produced an unexpected error: Some challenges have failed.. Skipping
IMPORTANT NOTES:
  The following errors were reported by the server:
Domain: xxx.net
Type: unauthorized
Detail: Invalid response from

https://xxx.net/.well-known/acme-challenge/vr-VPSX1sArrECRkqb1iwVAAsCWpaC8xW6_SRCBNb1I

[x.x.x.x]: 403
To fix these errors, please make sure that your domain name was
entered correctly and the DNS A/AAAA record(s) for that domain
contain(s) the right IP address.
  The following errors were reported by the server: