Skip to content

Close CA/IaC drift: codify Linux SCEP provisioners + prune dead ACME#43

Merged
rcurranmoz merged 2 commits into
mainfrom
docs-security-review-followup
Jul 15, 2026
Merged

Close CA/IaC drift: codify Linux SCEP provisioners + prune dead ACME#43
rcurranmoz merged 2 commits into
mainfrom
docs-security-review-followup

Conversation

@rcurranmoz

Copy link
Copy Markdown
Collaborator

Follow-up to #42 (which merged before these two commits landed). These finish the CA/IaC-drift cleanup so the live step-ca is fully reproducible from code.

  • Codify the 6 Linux SCEP provisioners in scripts/bootstrap-step-ca.sh — the live CA had 8 SCEP provisioners but the script codified only 2, so a rebuild wouldn't reproduce it. Roles verified from the live provisioner x509 templates. Base template is already platform-agnostic. (Linux secrets are still empty / path not live — codified for reproducibility, not because Linux is functional.)
  • Prune dead ACME config — the abandoned acme-no-sip provisioner was removed from the live CA; this removes its repo artifacts (mdm/acme-relops.mobileconfig.template, scripts/render-acme-mobileconfig.sh) and reconciles the docs.

Live CA now = admin@mozilla.com (JWK) + 8 SCEP provisioners, matching bootstrap-step-ca.sh exactly. One minor tidy-up remains (noted in the deep-dive): the harmless dead /acme/* route still in terraform/lb.tf.

🤖 Generated with Claude Code

rcurranmoz and others added 2 commits July 15, 2026 08:58
Close the IaC drift: the live CA had 8 SCEP provisioners but the script only
codified 2, so a rebuild would not reproduce the CA. Add the six gecko_t_linux_*
provisioners with the exact SPIFFE roles verified from the live CA's x509
templates. The base template is already platform-agnostic (only __SPIFFE_ROLE__
differs), so the same template serves macOS and Linux.

Note: the Linux provisioners are in service on the CA but their vault-* secrets
are still empty (the Linux path is scaffolded, not live) — codified so the CA is
reproducible from code, not because Linux is functional.

(The dead acme-no-sip ACME provisioner is pruned from the live CA separately.)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
acme-no-sip (abandoned attestation experiment) was removed from the live CA, so
the provisioner list now matches scripts/bootstrap-step-ca.sh exactly (admin JWK
+ 8 SCEP). Remove the dead ACME artifacts from the repo and update the docs:

- rm mdm/acme-relops.mobileconfig.template + scripts/render-acme-mobileconfig.sh
- README: drop the acme template from the repo tree; mark /acme/* as a now-unused
  LB route; note the CA is fully reproducible from code (drift closed)
- deep-dive.html: update the follow-up — CA/IaC drift closed; only remaining
  tidy-up is dropping the dead /acme/* path rule from terraform/lb.tf

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rcurranmoz
rcurranmoz merged commit 5820a44 into main Jul 15, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant