📚

【Let's Encrypt】ACME v2の更新

2023/06/05に公開

#SSL #LetsEncrypt #エラー対応

Let's Encryptが自動更新されていなかったので、手動でコマンドを実行したところ下記のようなエラーが発生。

TeraTarm
$ sh /root/lets.sh

 Attempting to renew cert from /etc/letsencrypt/renewal/lospec.com.conf produced an unexpected error: urn:acme:error:serverInternal :: The server experienced an internal error :: ACMEv1 Brownout in Progress. ACMEv1 will fully turn off on June 1, 2021. Check https://letsencrypt.status.io/ for more details.. Skipping.

どうやらACMEv1というプロトコルが古いのでバージョンアップしてください、ということのようです。
以下手順に沿って進めていきます。

現在の ACME のバージョン確認

TeraTarm
$ ls -l /etc/letsencrypt/accounts/

()
drwx------ 3 root root 4096  722  2018 acme-staging-v01.api.letsencrypt.org
drwx------ 3 root root 4096  722  2018 acme-v01.api.letsencrypt.org

Certbotのバージョンアップ

プロトコルのアップデートを行う前に、Certbot を最新にする必要があります。
現在の Certbot のバージョンを確認し、必要に応じてアップデートを行います。

TeraTarm
# バージョン確認
$ certbot --version
    certbot 0.25.1

# アップデート
$ yum update -y --enablerepo=epel certbot

# 最新バージョンになっているか確認
$ certbot --version
    certbot 1.11.0

confファイルにACME v2 のサーバを指定

Certbot コマンド実行時に、ACME v2 を参照できるようにするために、
以下の公式サイトを参考にし、ACME v2 (RFC 8555) の 本番用のURLを/etc/letsencrypt/renewal/ドメイン名.conf[renewalparams]セクションに追加します。

Let's Encrypt : ACME プロトコルのアップデート

TeraTarm
$ vi /etc/letsencrypt/renewal/ドメイン名.conf

~()~
# Options used in the renewal process
[renewalparams]
authenticator = webroot
account = hogehoge
post_hook = systemctl restart nginx
server = https://acme-v02.api.letsencrypt.org/directory  ←ここを追加
manual_public_ip_logging_ok = None
[[webroot_map]]
~()~

ACMEv2プロトコルでの証明書更新ができているか確認

上記confファイルに設定を追加後、再度--dry-runを実行してログを確認してみます。

TeraTarm
$ certbot renew --dry-run
$ less /var/log/letsencrypt/letsencrypt.log

~()~
2021-04-07 15:38:17,027:DEBUG:acme.client:Sending GET request to https://acme-staging-v02.api.letsencrypt.org/directory.
~()~
2021-04-07 15:38:21,201:DEBUG:certbot._internal.renewal:no renewal failures
~()~

GET request to https://acme-staging-v02.api.letsencrypt.org/directoryというように、v02とついたURIに証明書発行のリクエストが行われていれば設定が正しくできています。
問題なさそうだったら--dry-run抜きでアップデートを実行してください。

Discussion