On 2025/03/12 12:00, Stuart Henderson wrote:
> Sorry I don't have a diff for this.
> 
> I just had a renewal on letsencrypt staging fail; status went from
> PENDING->READY->PROCESSING when acme-client netproc was expecting only
> INVALID/VALID/PENDING/READY.

Bit this again today.

> From https://www.rfc-editor.org/rfc/rfc8555#page-48
> 
>    o  "processing": The certificate is being issued.  Send a POST-as-GET
>       request after the time given in the Retry-After header field of
>       the response, if any.
> 
> Ordering again worked. Presumably, with current lifetimes, daily
> cronjobs are likely to result in a working order before expiry - so it's
> not urgent at the moment - but with the trajectory of reduced lifetimes
> I think it will become more important to handle in a single run of
> acme-client.
> 
> I suspect we see this a) when CA issuance is running slowly or b) if
> there's a CA bug where it doesn't move to INVALID correctly (there are
> reports in the past of orders getting stuck on PROCESSING) so actually
> reproducing on an internet CA is likely to be awkward, but also it would
> seem prudent to cap any retries either by number of attempts or overall
> time.
> 
> Redacted -vv output:
> 
> acme-client: /etc/ssl/private/(domain).key: loaded domain key
> acme-client: /etc/acme/letsencrypt-staging-privkey.pem: loaded account key
> acme-client: /etc/ssl/(domain).crt: certificate renewable: 29 days left
> acme-client: https://acme-staging-v02.api.letsencrypt.org/directory: 
> directories
> acme-client: acme-staging-v02.api.letsencrypt.org: DNS: 172.65.46.172
> acme-client: acme-staging-v02.api.letsencrypt.org: DNS: 
> 2606:4700:60:0:f41b:d4fe:4325:6026
> acme-client: transfer buffer: [{
>   "Np6Hc1INlmg": 
> "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417";,
>   "keyChange": "https://acme-staging-v02.api.letsencrypt.org/acme/key-change";,
>   "meta": {
>     "caaIdentities": [
>       "letsencrypt.org"
>     ],
>     "profiles": {
>       "classic": "https://letsencrypt.org/docs/profiles#classic";,
>       "shortlived": "https://letsencrypt.org/docs/profiles#shortlived (not 
> yet generally available)",
>       "tlsserver": "https://letsencrypt.org/docs/profiles#tlsserver (not yet 
> generally available)"
>     },
>     "termsOfService": 
> "https://letsencrypt.org/documents/LE-SA-v1.5-February-24-2025.pdf";,
>     "website": "https://letsencrypt.org/docs/staging-environment/";
>   },
>   "newAccount": "https://acme-staging-v02.api.letsencrypt.org/acme/new-acct";,
>   "newNonce": "https://acme-staging-v02.api.letsencrypt.org/acme/new-nonce";,
>   "newOrder": "https://acme-staging-v02.api.letsencrypt.org/acme/new-order";,
>   "renewalInfo": 
> "https://acme-staging-v02.api.letsencrypt.org/draft-ietf-acme-ari-03/renewalInfo";,
>   "revokeCert": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/revoke-cert";
> }] (1116 bytes)
> acme-client: account key: 
> https://acme-staging-v02.api.letsencrypt.org/acme/acct/(acct)
> acme-client: transfer buffer: [{
>   "key": {
>     "kty": "RSA",
>     "n": "(redacted)",
>     "e": "(redacted)"
>   },
>   "createdAt": "2020-02-04T11:54:20Z",
>   "status": "valid"
> }] (808 bytes)
> acme-client: transfer buffer: [{
>   "status": "pending",
>   "expires": "2025-03-19T11:08:03Z",
>   "identifiers": [
>     {
>       "type": "dns",
>       "value": "(domain)"
>     }
>   ],
>   "authorizations": [
>     "https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)"
>   ],
>   "finalize": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/(acct)/(final)"
> }] (364 bytes)
> acme-client: dochngreq: 
> https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)
> acme-client: transfer buffer: [{
>   "identifier": {
>     "type": "dns",
>     "value": "(domain)"
>   },
>   "status": "pending",
>   "expires": "2025-03-19T11:08:03Z",
>   "challenges": [
>     {
>       "type": "http-01",
>       "url": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted)",
>       "status": "pending",
>       "token": "(token)"
>     },
>     {
>       "type": "tls-alpn-01",
>       "url": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted)",
>       "status": "pending",
>       "token": "(token)"
>     },
>     {
>       "type": "dns-01",
>       "url": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted)",
>       "status": "pending",
>       "token": "(token)"
>     }
>   ]
> }] (843 bytes)
> acme-client: challenge, token: (token), uri: 
> https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted),
>  status: 0
> acme-client: /var/www/letsencrypt/.well-known/acme-challenge/(token): created
> acme-client: 
> https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted):
>  challenge
> acme-client: transfer buffer: [{
>   "type": "http-01",
>   "url": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted)",
>   "status": "pending",
>   "token": "(token)"
> }] (200 bytes)
> acme-client: transfer buffer: [{
>   "status": "pending",
>   "expires": "2025-03-19T11:08:03Z",
>   "identifiers": [
>     {
>       "type": "dns",
>       "value": "(domain)"
>     }
>   ],
>   "authorizations": [
>     "https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)"
>   ],
>   "finalize": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/(acct)/(final)"
> }] (364 bytes)
> acme-client: order.status 0
> acme-client: dochngreq: 
> https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)
> acme-client: transfer buffer: [{
>   "identifier": {
>     "type": "dns",
>     "value": "(domain)"
>   },
>   "status": "valid",
>   "expires": "2025-04-11T11:08:06Z",
>   "challenges": [
>     {
>       "type": "http-01",
>       "url": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted)",
>       "status": "valid",
>       "validated": "2025-03-12T11:08:05Z",
>       "token": "(token)",
>       "validationRecord": [
>         {
>           "url": "http://(domain)/.well-known/acme-challenge/(token)",
>           "hostname": "(domain)",
>           "port": "80",
>           "addressesResolved": [
>             "(ip)"
>           ],
>           "addressUsed": "(ip)"
>         }
>       ]
>     }
>   ]
> }] (786 bytes)
> acme-client: challenge, token: (token), uri: 
> https://acme-staging-v02.api.letsencrypt.org/acme/chall/(acct)/(auth)/(redacted),
>  status: 2
> acme-client: transfer buffer: [{
>   "status": "ready",
>   "expires": "2025-03-19T11:08:03Z",
>   "identifiers": [
>     {
>       "type": "dns",
>       "value": "(domain)"
>     }
>   ],
>   "authorizations": [
>     "https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)"
>   ],
>   "finalize": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/(acct)/(final)"
> }] (362 bytes)
> acme-client: order.status 1
> acme-client: 
> https://acme-staging-v02.api.letsencrypt.org/acme/finalize/(acct)/(final): 
> certificate
> acme-client: transfer buffer: [{
>   "status": "processing",
>   "expires": "2025-03-19T11:08:03Z",
>   "identifiers": [
>     {
>       "type": "dns",
>       "value": "(domain)"
>     }
>   ],
>   "authorizations": [
>     "https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)"
>   ],
>   "finalize": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/(acct)/(final)"
> }] (367 bytes)
> acme-client: transfer buffer: [{
>   "status": "processing",
>   "expires": "2025-03-19T11:08:03Z",
>   "identifiers": [
>     {
>       "type": "dns",
>       "value": "(domain)"
>     }
>   ],
>   "authorizations": [
>     "https://acme-staging-v02.api.letsencrypt.org/acme/authz/(acct)/(auth)"
>   ],
>   "finalize": 
> "https://acme-staging-v02.api.letsencrypt.org/acme/finalize/(acct)/(final)"
> }] (367 bytes)
> acme-client: order.status 2
> acme-client: unhandled status: 2
> acme-client: bad exit: netproc(18700): 1
> 

Reply via email to