feat: add ACME "dns-account-01" challenge
Description:
This pull request addresses https://github.com/letsencrypt/boulder/issues/7240 by integrating the "dns-account-01" challenge into Boulder. This challenge introduces a novel method for domain control validation within the ACME protocol.
Background:
The "dns-account-01" challenge, in its current Internet Draft form, introduces an additional approach for domain control validation. It uses a DNS resource linked to the ACME Account Resource URL and the authorization scope, offering enhanced flexibility and security in domain validation processes.
Changes:
- In
va/dns.go, thegetDNSAccountChallengeSubdomainfunction has been introduced to compute the DNS subdomain forDNSAccount01challenges based on the account's resource URL and scope. - The
validateTXTfunction has been added to query TXT records associated with a challenge subdomain and validate the authorization keys. - The existing
validateDNS01function continues to validateDNS01challenges but now leveragesvalidateTXTfor validation. - The new
validateDNSAccount01function constructs the challenge subdomain usinggetDNSAccountChallengeSubdomainand validates the authorization keys forDNSAccount01challenges. -
va/va_test.gohas been updated to test the validation of malformed challenges with the new scope parameter. - Integration test
TestDNSAccountChallengehas been added to validate the end-to-end functionality ofDNSAccount01challenges.
Vendor Dependency Updates:
- Updated
github.com/eggsampler/acme/v3to versionv3.5.0.
These changes enhance the security and flexibility of Boulder's validation process for DNS-based challenges, particularly with the introduction of support for the DNSAccount01 challenge type, thereby improving the overall robustness of the system.
Hey friends, I think the bulk of the work here is complete for the moment. I am beginning a thru-hike of the Appalachian Trail and will not be available to work on this for the time being. If there are any adjustments needed due to spec changes, bugs or nits, someone else will need to make those changes before merging. Best, Shiloh