Hello,
I am currently testing Cert Warden with the HARICA Stage ACME service and I am experiencing a reproducible problem when issuing certificates using DNS-01.
Environment
Cert Warden: 0.29.x
ACME CA: HARICA Stage
Challenge type: DNS-01
DNS provider: IONOS
Domain used for testing: apache.lehrer-bremen.de
The DNS provisioning itself works correctly.
A new order initially proceeds normally:
orders: fulfilling worker 1: ordering order id 6
(certificate name: apache-test, subject: apache.lehrer-bremen.de)
challenges: success on any needed provision action
for domain apache.lehrer-bremen.de
challenges: waiting to validate apache.lehrer-bremen.de
After the propagation delay, the following error occurs:
failed to save response replay nonce
(nonce manager: cannot save empty nonce)
challenges: status: 0;
type: urn:ietf:params:acme:error:malformed;
detail: challenge or authorization must be in pending state
All subsequent retries fail with:
challenges: Post "": unsupported protocol scheme ""
Cert Warden then remains in this retry loop and the order does not complete.
I tested different DNS propagation delays, including 300 seconds and 30 seconds, and the behavior is identical.
Using Cert Warden's Debug POST-as-GET functionality, I queried the authorization while Cert Warden was stuck.
HARICA reports:
{
"identifier": {
"type": "dns",
"value": "apache.lehrer-bremen.de"
},
"status": "valid",
"challenges": [
{
"type": "http-01",
"status": "pending"
},
{
"type": "dns-01",
"status": "valid"
}
]
}
The POST-as-GET response from HARICA also contains a Replay-Nonce response header.
So at this point HARICA considers both the DNS-01 challenge and the authorization valid, while the Cert Warden challenge solver continues retrying with:
Post "": unsupported protocol scheme ""
There is another interesting behavior:
If I restart the Cert Warden container while the order is stuck, Cert Warden detects the incomplete order after startup:
orders: 1 incomplete orders added to order queue
It then retries the same existing order:
orders: fulfilling worker 0: ordering order id 4
and only a few seconds later successfully completes it:
orders: fulfilling worker 0:
order id 4 completed with status valid
orders: fulfilling worker 0: order 4 done
No new DNS challenge is required after the restart.
This behavior has been reproduced with multiple HARICA Stage orders.
It therefore appears that HARICA successfully validates the DNS-01 authorization, but the running Cert Warden challenge solver does not correctly handle the authorization changing to valid. After receiving challenge or authorization must be in pending state, the solver also appears to lose the URL used for subsequent requests, resulting in Post "".
Could this be a compatibility issue between HARICA's ACME implementation and Cert Warden's challenge/nonce handling, or an issue with handling an authorization that has already transitioned to valid?
I can provide additional debug logs and POST-as-GET responses if needed.