Certificate authority ceremonies#
This section is the canonical, executable record of every CCAT root-CA
ceremony — the procedures, paper artefacts, threat model, and
post-ceremony lessons. The documents here are loaded onto the
supplies USB by step-ca/prepare-ceremony-usb.sh so the air-gapped
ceremony laptop has the same content this Sphinx build does.
When to run a ceremony#
Phase 2 commissioning — the original root + intermediate setup before any CCAT client trusts anything (this is what the playbook below is written for; first run was 2026-04-29).
Root rotation — every ~10 years, or sooner if the threat model changes. The playbook is reusable; only PINs and HSM serials change.
Post-incident re-key — if HSM #1 (root) leaves the safe under uncontrolled conditions, treat it as compromised and rerun the ceremony with fresh HSMs.
The documents#
- CCAT CA — Ceremony Supplies USB
- Ceremony Live USB — Preparation Guide
- CCAT CA — Offline Root Ceremony Playbook
- Phase A — HSM #1 (root) operations
- Phase B — HSM #2 (intermediate) operations
- Phase C — back to HSM #1 to cross-sign
- Phase D — paper finalisation (no HSM)
- Lessons learned — root ceremony 2026-04-29
- 1. OpenSC virtual-token quirk: the label gets renamed
- 2.
step certificate createURI shape - 3.
step certificate createreflex password prompt - 4.
step certificate signargument order - 5.
step certificate signwrites to stdout - 6. SSH CA pubkey export — version-portable conversion
- 7. Stick-swap gate procedure
- 8. Phase grouping reduces 7 swaps to 2
- 9. Read-aloud rule scoped to non-secrets only
- 10. PIN format, length, and retry counters
- 11. PKCS#11 slot indices are non-stable
- 12. Single USB at install vs three USBs at ceremony
- What the playbook does not yet capture
- CCAT CA — HSM Cutover Playbook (post-ceremony)
- §0 — Preconditions
- Stage A — Verify HSM #2 is functional on input-b
- Stage B — Commit ceremony artefacts to the repo
- Stage C — Vault the intermediate user PIN
- Stage D — Build a step-ca image with
opensc-pkcs11 - Stage E — Compose changes for HSM-backed mode
- Stage F — Write the HSM-aware
ca.json - Stage G — The cutover (downtime window, ~5 minutes)
- Stage H — Test cohort re-bootstraps
- §I — After the cutover settles
- Roll-back / what-if
- Appendix — files this playbook touches
- Lessons learned — Phase 2 HSM cutover 2026-05-04
- 1. The architectural multi-pivot
- 2. step-cli 0.30.2 has no working offline
provisioner add - 3.
enableSSHCAdefaults off in Phase 2 - 4. Volume pre-population needs a running helper container
- 5. Host pcscd must be stopped post-cutover
- 6. Plumbing bugs that ate real hours
- 7. Verifying HSM-backed signing without physical access
- 8. Open follow-ups (not blocking; tracked as GitHub issues)
Document |
Audience |
Purpose |
|---|---|---|
Operator at ceremony start |
“Start here” entry point printed on the supplies USB. |
|
Prep operator (pre-ceremony) |
How to build the boot + supplies USBs, threat model, hash-verify the manifest. |
|
Operator + witness during ceremony |
Numbered, executable steps §0 through §16. The single source of truth. |
|
Future ceremony operators |
Post-ceremony retrospective: PKCS#11 URI shape, OpenSC virtual-token quirk, step-cli argument-order issues, and other surprises that the playbook now bakes in. |
|
Operator + witness during HSM cutover |
Stages A–H executable for the post-ceremony cutover on input-b: HSM verification, root rotation, compose changes, volume bootstrap, provisioner sync, test cohort re-bootstrap. |
|
Future cutover operators |
Phase 2 cutover retrospective: the libusb-vs-pcscd architectural multi-pivot, step-cli’s missing offline mode, host pcscd contention, the udev/GID alignment dance, and the plumbing bugs that ate hours. |
Adjacent documents (background, not procedure)#
Certificate authority architecture — long-form explanation of the trust model, two-HSM layout, GitHub-team gate, lifetimes, and Pattern A. The Phase 2 ceremony itself is no longer narrated here; the executable procedure lives in
playbook.mdandcutover-playbook.md.CCAT provisioner set — reference tables for the six provisioners, SSH access tiers, and the Ansible role tags exposed by
ca_trustandhsm_host.CA day-to-day operations, CA provisioner management, CA rotation and recovery — operator how-to guides for routine work, provisioner changes, and rotation/DR scenarios.
Certificate authority threat model — the broader threat-modelling document this ceremony’s discipline derives from.
TLS and PKI primer — vocabulary refresher.
Paper artefacts#
The PIN sheet (step-ca/ceremony-pin-sheet.tex → .pdf) is the
paper companion the operator fills in by hand during the ceremony. It
captures the four PINs, two HSM serials, and the root-CA fingerprint
twice. The LaTeX source is committed; the rendered PDF should be
printed on a trusted printer immediately before the ceremony.
To rebuild the PDF from a checkout:
cd step-ca && pdflatex ceremony-pin-sheet.tex && pdflatex ceremony-pin-sheet.tex
(Twice, so the LastPage reference resolves.)