✓ Probe & CA Enrollment Implemented
⬚ Device Install requires CertManager
2. Certificate inventory & CA enrollment
During assessments, PrintMarshal probes TLS on ports 443 and 631, recording negotiated TLS versions, cipher suites, and leaf certificate metadata (subject, issuer, SANs, key type, self-signed status, SHA-256 fingerprint, and notAfter expiry).
- Expiry alerts: Automatically raises alerts at 30, 14, and 7 days before expiry (and critical alerts on expired certificates).
- CA enrollment protocols: Generates an RSA-2048 or ECDSA-P256 keypair and CSR inside PrintMarshal and enrolls against configured CA profiles using SCEP, EST (/.well-known/est/simpleenroll), or ACME DNS-01 (two-step manual DNS TXT record creation).
- Private key protection: Issued private keys are encrypted at rest with AES-256-GCM and are never downloadable through the API.
Enrollment vs Installation boundary: Enrolling a certificate stores the issued certificate and encrypted key in PrintMarshal. Installing that certificate onto a printer requires a driver implementing CertManager (CapInstallCert). No shipped real-vendor driver implements CertManager today, and automatic renewal is not implemented.
✓ 4-Stage State Machine Implemented
⬚ Device Write requires SecurityWriter
3. Staged credential rotation
Rotating a printer's admin password, SNMPv2c write community, or SNMPv3 passphrase risks stranding the device if the server and printer fall out of sync. PrintMarshal uses a 4-stage rotation state machine (internal/security/rotation.go):
- 1. staged: Encrypts and stores the pending credential alongside the current active credential in PrintMarshal.
- 2. device_written: Writes the new secret to the printer via the device's SecurityWriter driver.
- 3. verified: Performs a live read-back using the newly written credential to prove the printer accepted it.
- 4. committed (or rolled_back): Promotes the pending credential only after verification succeeds; if verification fails, the stored credential rolls back automatically.
Driver boundary: Executing step 2 against a printer requires a driver with SecurityWriter (CapWriteSecurity). No shipped real-vendor driver implements SecurityWriter today.