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初学者向け:
コメント