letsencrypt / letsencrypt/boulder

Remove non-standard ACME fields from WFE2 responses

Open
#8,709 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
5.8k
Forks
649
Avg merge
3d 23h
Merged PRs (30d)
24

Description

We'd like to start deprecating and removing non-standard fields from Boulder's responses.

Checklist of wire-level fields Boulder emits that are not defined in the RFCs or the drafts Boulder implements: RFC 8555, RFC 9773, RFC 8737, draft-ietf-acme-profiles, draft-ietf-acme-dns-account-challenge, draft-ietf-acme-dns-persist).

  • Account key — emits the full JWK on every account response. RFC 8555
    §7.1.2 enumerates exactly status, contact, termsOfServiceAgreed,
    externalAccountBinding, orders; key is not defined, and §7.3
    specifies the server "MUST NOT reflect … any unrecognized fields" in the
    resulting account object.
    core.Registration.Key

  • Account createdAt — non-standard timestamp on account responses.
    Not defined in RFC 8555 §7.1.2.
    core.Registration.CreatedAt

  • Challenge validationRecord — serializes an internal object tree
    (URLs, hostnames, ports, resolved/tried IPs, resolver addresses) onto
    challenge responses. RFC 8555 §7.1.5 / §8 define only type, url,
    status, validated, error plus per-type fields; this field is not
    defined for any challenge type in RFC 8555, RFC 8737, or the dns-account
    / dns-persist drafts.
    core.Challenge.ValidationRecord

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in core/objects.go at Registration.Key, Registration.CreatedAt, and Challenge.ValidationRecord, then trace how these fields are serialized into WFE2 responses. Use the cited RFC sections to confirm the allowed response fields. Done means the three non-standard fields no longer appear in the relevant account and challenge responses, with coverage for the changed wire format.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
api, security
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.