Hello. I'm in the process of trying to get DNS-based certificate issuing set up for a domain. I'm extending the acme4j client with support for Vultr DNS. I'm performing the DNS-01 challenge, because I may not be exposing a web server, and I want to issue at least one wildcard certificate.
My problem is that I'm creating a TXT
record in response to a challenge, and:
- This
TXT
record appears to be correct, and has the correct name. - The
TXT
record appears to have been propagated to various servers: After I create the record, I wait for five minutes and then make a request to8.8.8.8
and ask it for theTXT
records for the domain, and there's a record present with the correct name and digest value. I've tried waiting for longer, but this makes no difference. - I've also verified that the
TXT
record is visible from other servers, such as the authoritative nameserver for my domain (ns1.vultr.com
), and various other freely accessible DNS servers. - I've verified that I have both
A
andAAAA
records for the domain and the subdomain I'm trying to get a certificate for.
The challenge always fails with:
{
"identifier": {"type":"dns","value":"www.eigion.one"},
"status":"invalid",
"expires":"2022-06-29T15:07:41Z",
"challenges":[{
"type":"dns-01",
"status":"invalid",
"error":{"type":"urn:ietf:params:acme:error:dns","detail":"DNS problem: NXDOMAIN looking up TXT for _acme-challenge.www.eigion.one - check that a DNS record exists for this domain","status":400},"url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/122473436266/CYSJsw","token":"xP5O17o6Yz8SnVzfmlaNdEreE4J1EZnzkwHBf5TRLIQ","validated":"2022-06-22T15:12:42Z"}]}
I've left the temporary TXT
record in place after the most recent one, if anyone wants to try to inspect the DNS records.
My domain is: eigion.one
I ran this command: (Programmatically invoked acme4j
library)
It produced this output:
The complete output including all of the requests made to all servers:
I've executed variations on this across multiple servers and all give the same response:
$ dig _acme_challenge.www.eigion.one txt @ns1.vultr.com
; <<>> DiG 9.16.27 <<>> _acme_challenge.www.eigion.one txt @ns1.vultr.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50650
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;_acme_challenge.www.eigion.one. IN TXT
;; ANSWER SECTION:
_acme_challenge.www.eigion.one. 600 IN TXT "DCHAlXY2WUSog3p6beqjMQFfzjXG2JzlhnoZYZm4N1s"
;; Query time: 0 msec
;; SERVER: 2001:19f0:ccd::1#53(2001:19f0:ccd::1)
;; WHEN: Wed Jun 22 15:20:24 UTC 2022
;; MSG SIZE rcvd: 115
My web server is (include version): Nonexistent.
The operating system my web server runs on is (include version): FreeBSD 13.
My hosting provider, if applicable, is: Vultr
I can login to a root shell on my machine (yes or no, or I don't know): Yes
I'm using a control panel to manage my site (no, or provide the name and version of the control panel): No
The version of my client is (e.g. output of certbot --version
or certbot-auto --version
if you're using Certbot): acme4j 2.13