traefikのlet's encryptのacmeのチャレンジで、DNS-01 challengeでなく、HTTP-01 challengeを使うように設定を戻した。
なぜ戻したか
DNS-01 challengeだと更新がうまくいかない。期限が切れますよーというメールがletsencryptから来る。再起動で更新してくれるが、更新に失敗することもあって原因がはっきりしなかった。DNSプロバイダの相性が悪いのか・・?
HTTP-01 challengeであればDNSのレコードでチャレンジされることはないので、問題なく更新できると思う。というかDNS-01 challengeにする以前は、期限切れが近いというメールがきた覚えがない。なのでHTTP-01 challengeに戻すことにした。
やったこと
traefik.ymlでHTTP-01 challengeを使うresolverを用意するtraefikの後ろにあるサービスのresolverの指定を変更する
この2点を行った。
まずはtraefik.ymlの設定を戻すことから。acmeでhttpChallengeを指定する:
# traefik.yml
# ... 省略
certificatesresolvers:
hcresolver:
acme:
httpChallenge:
entryPoint: web
email: "some_addr@example.com"
storage: "/letsencrypt/acme_hcresolver.json"
変更したら、次へ。
traefikの後ろにあるサービスの設定も以前のcertificatesresolverから上のhcresolverに戻す。
これでOK。HTTP-01 challengeで認証できる。
ほかの対処法?
DNS-01 challengeで失敗していたのは、伝播が済んでいないせいかもしれない?
以下のようなtraefik.ymlの設定で:
certificatesresolvers:
dcresolver:
acme:
dnschallenge:
provider: "<provider>"
delayBeforeCheck: 42
email: "some_addr@example.com"
storage: "/letsencrypt/acme.json"
DNS-01 challengeを利用するとき、プロバイダーの指定の次の行のdelayBeforeCheckを結構大きい値にすれば問題ないかもしれない。
3000秒くらい待っておけばいいのかもしれない?
正直よくわかってない。
おわり
traefikで自動でHTTP-01 challengeで更新してくれるのならこれでいいと思って、使うことにした。
できればDNS-01 challengeが使えないにしても、原因ははっきりさせたかったが…残念。ちなみにDNSサーバーはconohaを利用させてもらっている。
短いですが以上です。
Amazonアソシエイト
DNS初学者向け:



コメント