v3.1.0 — SSH Certificate Manager onboarding
Makes the SSH Certificate Manager usable end‑to‑end without guesswork: the
copy‑paste artifacts are now correct‑by‑construction, the UI narrates the whole
journey and catches the two silent‑failure traps, and three short guides document it.
Highlights
- Single source of truth for on‑host paths/filenames — one drop‑in filename
(60-ssh-ca.conf), one User CA path, and host/cert filenames derived from the
registered key algorithm, so a verbatim paste can't drift across the UI, REST, and
the Ansible role. - Per‑host deploy bundle — the host detail page now lists every file to place on
a server in one panel (host cert + User CA pubkey + sshd drop‑in +auth_principals- a KRL refresh snippet), closing the "forgot the User CA file" gap.
- Guided UI — a first‑run checklist on
/ssh, a principal login cross‑check on the
Issue‑cert form (defuses the #1 "valid cert but Permission denied" trap), and concept
callouts (the two trust directions, the principal‑in‑two‑places rule, and honest
"this does not deploy" notes). - Corrected end‑user handoff — the certificate filename is derived from the pasted
key type, plus a ready~/.ssh/config, the Host CA@cert-authorityline, and
keygen/verify/login commands with the real expiry. - Docs —
docs/ssh/concept · operator quickstart · host & client setup, linked
from README / DEPLOYMENT / CLAUDE.md (SSH was previously documented nowhere).
Fixed
- A server's
RevokedKeysnow serves the User CA's KRL (it was wrongly wired to the
Host CA's), so revoking a user cert actually reaches hosts — the emergency kill switch
works. - The SSH landing certificate query no longer errors, so the "Setup complete" state and
step 5 of the checklist render correctly.
Changed (API additive)
ssh.user.issuenow returnskeyType;SshHostDtoexposeshostKeyAlgorithm; new
ssh.host.deployBundleandssh.principal.mappingsByPrincipalqueries.
Docker images
ghcr.io/oriolrius/pki-manager-web/backend:3.1.0ghcr.io/oriolrius/pki-manager-web/frontend:3.1.0
Full changelog: v3.0.1...v3.1.0