Continuing the discussion from Dns-persist-01 challenge:
I was a little dismayed by this thread tbh. The designers of the dns-persist challenge seem to have no perspective or care for real-world client concerns, and seem to be missing points of concern brought up by client developers, so I would like to reiterate here...
And apologies if I am missing something obvious, as is usually the case!
Is it possible to get the issuerDomainNames without creating an order? According to the spec, a pre-auth (newAuthz) should make it possible, but Let's Encrypt's directory does not offer this optional endpoint.
Right now it seems like in order to use DNS-PERSIST, interactive use is required, because an Order must be created first, and orders expire and cost fake Internet tokens. ![]()
Aaron's opinion does not seem to consider this though:
If it did that every time, all renewals would be manual, and that's a problem. If it never did the prompt-and-wait, the user would never be told what record they should put in place.
This perspective still implies an initial mandatory interactive certificate issuance, rather than a pre-authorization or even just a GET request for information.
I think most users, at least of my clients, will run a command or hit an API endpoint to get the info they need for a DNS record, then provision that record once and be done.
They will NOT want to do this in-band with a real order getting a certificate. The whole point is to provision the record before needing certificates.
The DNS-PERSIST spec says that CAs "MAY" use the domains in the directory's caaIdentities field, but this is optional (and the "MAY" is weak). So I can't rely on that.
It seems we have to create an Order, then initiate an Authz to get a Challenge object with issuerDomainNames. This essentially mandates interactive domain issuance.
The information we need from the CA should be a free GET request, or should just be in the directory. It already might be in the directory but weak verbiage makes this unreliable.
Calling the newAuthz endpoint would be acceptable if we must, but this is also an optional endpoint and Let's Encrypt's directory does not include it.
So what are we to do?
Please, either:
- require that
issuerDomainNamesbe identical to thecaaIdentitiesin the directory (so we can just usecaaIdentities) - or revise the spec so that supporting DNS-PERSIST necessarily implies supporting pre-authorization (newAuthz then becomes required for DNS-PERSIST).
Thank you for considering, and please enlighten me if I've missed something...