afosto / yaac

Yet another ACME client: a decoupled LetsEncrypt client
Other
219 stars 85 forks source link

Added support for retrieving certificates when asynchronous order finalization is enabled on the ACME server-side. #64

Open CodeAdminDe opened 7 months ago

CodeAdminDe commented 7 months ago

Desc

This fixes issue #63, which is due to the following (partially planned) change at the ACME server implementation level: https://community.letsencrypt.org/t/enabling-asynchronous-order-finalization/193522

Tests

I've tested it against LE Staging & LE Live successfully.

Implementation details

The getCertificate() method in the Client class has been updated to handle cases where the certificate is not immediately available and retries fetching the certificate until it becomes valid. This also introduces a new (private) method getCertificateChain() in the Client class, which is used to fetch the certificate chain from the ACME API to avoid implementing the same code multiple times. Additionally, the Order class has been updated to include the new certificate property and a corresponding getCertificate() getter method.