I’m currently implementing a letsencrypt node.js client and using the dockerized boulder server for testing.
As described in document https://github.com/letsencrypt/boulder/blob/release/docs/acme-divergences.md - section 5.6 the server is not providing a retry-after header in case the server is not ready to issue a certificate.
In my experience the server returns to the POST /new-cert in such cases a 403 error - see example
[2016-12-13T11:40:32.187Z]: POST /acme/new-cert
[2016-12-13T11:40:32.218Z]: Status: 403
[2016-12-13T11:40:32.218Z]: HEADERS:
[2016-12-13T11:40:32.218Z]: {"boulder-request-id":"YO3Hxij0A0pJb0_7Nh68_sshxZQG4VrxgZO_3Cpszik","boulder-requester":"15","cache-control":"public, max-age=0, no-cache","content-type":"application/problem+json","replay-nonce":"QUHUzY8HJgmzCHX0dlRpltFF_J4Md7aht5Uso3vkEys","date":"Tue, 13 Dec 2016 11:40:32 GMT","content-length":"169","connection":"close"}
[2016-12-13T11:40:32.218Z]: DATA:
[2016-12-13T11:40:32.218Z]: {"type":"urn:acme:error:unauthorized","detail":"Error creating new cert :: Authorizations for these names not found or expired: testdomain.at","status":403}
[2016-12-13T11:40:32.218Z]: -------- Request Finished ————————
If I send another request e.g in 10 seconds then I can get the certificate
[2016-12-13T11:40:32.218Z]: Send another new-cert request in 10 sec
[2016-12-13T11:40:42.221Z]: POST /acme/new-cert
[2016-12-13T11:40:42.297Z]: Status: 201
[2016-12-13T11:40:42.297Z]: HEADERS:
[2016-12-13T11:40:42.297Z]: {"boulder-request-id":"vUioXvi74GXWjIJxw3ipLAVqF71zPkFyyuNJKYREBO8","boulder-requester":"15","cache-control":"public, max-age=0, no-cache","content-type":"application/pkix-cert","link":"<http://localhost:4000/acme/issuer-cert>;rel=\"up\"","location":"http://localhost:4000/acme/cert/ff4346e0b78ba3536b62c8739cd87bed5149","replay-nonce":"Fv56yP5Vk11mogXXBwoq7XP4vOypRT8F_lyxUGvb7Bs","date":"Tue, 13 Dec 2016 11:40:42 GMT","content-length":"1160","connection":"close"}
[2016-12-13T11:40:42.297Z]: DATA:
[2016-12-13T11:40:42.297Z]: Data Type: Buffer
[2016-12-13T11:40:42.297Z]: -------- Request Finished ----------------
Is it the right way to send another POST if the first POST is not successful?