Torus Solutions 改

Ello 2020-05-06T11:51:22.507Z

Let's Encrypt からあと 20 日で証明書が失効するというメールがきた。

Your certificate (or certificates) for the names listed below will expire in 20 days (on 26 May 20 04:00 +0000). Please make sure to renew your certificate before then, or visitors to your website will encounter errors. 証明書は Docker で自動的に更新してくれるはずなのにおかしいと思ったら、少し前に新しいルールが加わったらしい。Docker のログをみたらこんなのが出力されていた:

letsencrypt_1 | 2020-05-06 11:46:28,379:ERROR:simp_le:1421: CA marked some of the authorizations as invalid, which likely means it could not access http://example.com/.well-known/acme-challenge/X. Did you set correct path in -d example.com:path or –default_root? Are all your domains accessible from the internet? Please check your domains' DNS entries, your host's network/firewall setup and your webserver config. If a domain's DNS entry has both A and AAAA fields set up, some CAs such as Let's Encrypt will perform the challenge validation over IPv6. If you haven't setup correct CAA fields or if your DNS provider does not support CAA, validation attempts after september 8, 2017 will fail. Failing authorizations: https://acme-v01.api.letsencrypt.org/acme/authz-v3/XXXXXX

で、調べてみたらこんな文書が見つかった:Certificate Authority Authorization (CAA) - Let's Encrypt - Free SSL/TLS Certificates

DNS に CAA というレコードを足せば良いらしい。具体的にどのような値を書けばいいかはここで調べられた:CAA Record Generator

で、Google Domains で実際に CAA レコードを足してみたけど、まだこのチャレンジに失敗する。

追記 チャレンジに失敗する原因は CAA レコードの内容にあった。上記の CAA Record Generator で、type of certificate のところで、はじめは Wildcard だけにチェックを入れていて、これがいけないみたいだった。この時に出力されたポリシーはこんな感じ:

0 issue ";"
0 issuewild "letsencrypt.org"
0 iodef "mailto:hello@seaknot.dev"

0 issue ";" という行がまずかったみたい。で、下の画像のように Non-Wildcard と Wildcard の両方にチェックをいれてみた。

この結果として出力された CAA の内容は:

0 issue "letsencrypt.org"
0 iodef "mailto:hello@seaknot.dev"

これでうまくいった。