-
Notifications
You must be signed in to change notification settings - Fork 29
Description
Hi,
I'm currently working on a PR for acme.sh that adds optional JSON-based storage to the dns_acmedns plugin.
To get the PR reviewed, I must pass the DNS-API-Test in the acme.sh CI system.
However, this is currently not possible because of how acme-dns validates TXT records.
Problem Summary
The acme.sh DNS-API test (DNS.yml) generates synthetic TXT challenge values like:
acmeTestTxtRecord_1763716270
These records are much shorter than 43 characters, but acme-dns only accepts TXT values that satisfy this function:
func validTXT(s string) bool {
sn := sanitizeString(s)
if utf8.RuneCountInString(s) == 43 && utf8.RuneCountInString(sn) == 43 {
// 43 chars is the current LE auth key size, but not limited / defined by ACME
return true
}
return false
}Since the CI-generated values do not meet this condition, acme-dns responds with:
{"error": "bad_txt"}
This prevents the acme.sh DNS-API test from completing successfully, even though the plugin works correctly with real ACME challenge values.
Effect
Because acmetest uses TXT values shorter than 43 characters, every attempt to validate the test TXT record fails, causing the entire DNS-API test to fail.
This blocks verification of the acme.sh PR, even though the implementation behaves correctly with actual ACME challenges.
Question / Request
Would it be possible to consider one of the following options to improve compatibility with automated test frameworks such as acmetest?
- Adjust the acmetest TXT record generation so that it creates valid 43‑character TXT strings compatible with acme-dns,
or - Change the acme.sh DNS check to soft-fail only this specific TXT‑update step, allowing the remaining DNS workflow tests to execute successfully even when acme-dns rejects the synthetic TXT value.
At the moment, there is no way to pass the acme.sh DNS-API test using acme-dns because the test TXT values are rejected before they can be stored.
Any clarification or suggestions would be greatly appreciated.
Thanks!