Hi Let's Encrypt team,
We maintain an ACME client that has been working reliably for 5+ years, but recently we've noticed unexpected behavior changes regarding order and authorization reuse. We're using the Classic profile (not EAB).
Previous Behavior (worked for 5+ years)
When making multiple POST /acme/new-order requests for the same account and domain:
We would receive the same order URL in the response Location header
The same authorization URLs were returned in the order object
Fetching the authorization (GET /acme/authz/{id}) returned the same challenge tokens
This allowed our manual DNS workflow to function correctly
Current Behavior (recently changed)
When making multiple POST /acme/new-order requests for the same account and domain:
Order URL behavior is inconsistent:
Sometimes we receive the same order URL (order is reused)
Sometimes we receive different order URLs (new orders are created)
Authorization reuse is unpredictable:
Sometimes the authorization URLs point to the same authorization object (same challenge tokens)
Sometimes we get completely different authorization URLs with different challenge tokens
No clear pattern or timing
The behavior appears random and cannot be reliably predicted
Test Results
We've tested with both staging and production ACME directories:
Existing account (used for years):
Some domains: Same authorization objects/challenges across multiple new-order requests ✓
Other domains: Different authorization objects/challenges for each new-order request ✗
Brand new account:
All domains: Different authorization objects/challenges for each new-order request ✗
ACME Protocol Flow
Our current implementation:
POST /acme/new-order with identifiers → receive order URL and authorization URLs
GET /acme/authz/{id} → retrieve challenge details
User manually adds DNS TXT records
POST /acme/new-order again (same identifiers) → expecting same authorization
POST /acme/challenge/{id} → validate and finalize
Questions
Has there been a recent change in how Let's Encrypt handles authorization reuse for pending orders within the same profile (Classic)?
What is the documented ACME behavior for multiple new-order requests with identical identifiers from the same account?
Should the server return the same pending order?
Should authorizations be reused across different orders?
Is this specified in RFC 8555 or is it implementation-specific?
Is authorization reuse timing-based?
Is there a cache/reuse window for pending authorizations?
What is the expected duration?
Is this behavior account-specific?
Why do older accounts show more authorization reuse than new accounts?
Is there an account age or history factor?
Environment
ACME Profile: Classic (not EAB)
ACME Directory: Both Staging (acme-staging-v02.api.letsencrypt.org) and Production (acme-v02.api.letsencrypt.org)
Protocol: ACME v2 (RFC 8555)
Testing Period: Issue noticed in recent weeks/months
We understand that proper ACME implementation should store and reuse the order URL from the initial new-order response, and we're working on that fix. However, we'd like to understand if there was an intentional behavior change in authorization reuse or if this is expected behavior we should have been handling all along.
Thank you for any clarification you can provide!