我最近从dns-01切换到http-01 callengetypes的letsencrypt,因为我打算在未来签署我的dns区域,因此不再需要自动区域操作。 自从我做了这个改变以后,我不能再更新我的一些区域(我假设这些区域是我最初通过dns-challenge签名的)。 我的旧区域(从第一次使用 – 从一开始就使用http)正常工作。
只是为了澄清事情,我使用lukas2511的脱水客户端 。 我添加了一些debugging输出来检查脚本中是否有问题 – 而且看起来好像没有。
在提出挑战之后,我收到回复:
{ "identifier":{ "type":"dns", "value":"dennisschuerholz.de" }, "status":"valid", "expires":"2017-04-16T11:43:43Z", "challenges":[ { "type":"http-01", "status":"pending", "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324572", "token":"<some token>" }, { "type":"tls-sni-01", "status":"pending", "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324573", "token":"<some token>" }, { "type":"dns-01", "status":"valid", "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324574", "token":"<some token>", "keyAuthorization":"<some bar>", "validationRecord":[ { "Authorities":[ "dennisschuerholz.de.\t900\tIN\tNS\tns3.schuerholz.it.", "dennisschuerholz.de.\t900\tIN\tNS\tns1.schuerholz.it.", "dennisschuerholz.de.\t900\tIN\tNS\tns2.schuerholz.it.", "dennisschuerholz.de.\t900\tIN\tNS\tns.schuerholz.it." ], "hostname":"dennisschuerholz.de", "port":"", "addressesResolved":null, "addressUsed":"" } ] } ], "combinations":[[0],[2],[1]] }
我真的不明白为什么dns的挑战types仍然包含(过时的)有关该域的信息,如果“过期” – 键与此有关。
如果我现在试图回应这个挑战,那么这个状态会一直持续下去。
{ "type":"http-01", "status":"pending", "uri":"https://acme-v01.api.letsencrypt.org/acme/challenge/<some foo>/133324572", "token":"<some token>" }
似乎我坚持DNS挑战types,并想知道为什么和如何恢复它(如果可能)。 我只是在staging-path( https://acme-staging.api.letsencrypt.org/directory )上使用了相同的脚本和域,这工作正常。
来自LE社区的serverco 向我解释了最新情况 。
一旦一个域被validation,这个授权被记住一段时间(目前我相信90天),所以通过不同types的挑战(在你的情况下)的请求将导致总是得到一个“挂起”,除非脚本注意到“地位”:“有效”。 […]脱水[..]应该认识到有效的状态,并简单地获得一个新的证书。
我现在给我的脱水版本提供了一个补丁,如果不需要的话,它会跳过这个挑战。