SSL
Certificate lifecycle
Define deterministic issuance, renewal, revocation, and retirement paths with no hidden expiry drift.
On this page
Doctrine
- All certificate issuance is tied to owner, environment, and validity constraints.
- Renewal and rotation are tested in pre-production before production cutover.
- Revocation decisions include blast radius and customer impact estimation.
- Retirement requires cleanup of trust stores and ingress references.
Decision tree
- Is the certificate near expiry threshold?
- Yes → perform staged renewal and readiness checks.
- No → keep it in monitored steady-state.
- Did renewal complete without chain drift?
- Yes → validate handshakes across all ingress routes.
- No → pause rollout and inspect SAN/issuer and intermediates.
- Is revocation required?
- Yes → revoke immediately and publish trust updates.
- No → archive evidence and plan expiry-based retirement.
Diagnostics pathway
- Inspect validity windows and subject names:
openssl x509 -in /etc/ssl/certs/site.pem -noout -dates -text | rg -i "not before|not after|dns:" - Validate chain behavior:
openssl verify -CAfile /etc/ssl/certs/ca-chain.pem /etc/ssl/certs/site.pem - Test live handshake and protocol negotiation:
echo | openssl s_client -connect app.example.com:443 -servername app.example.com - Dry-run renewal:
certbot renew --dry-run
Operational checks
- Collect inventory and ownership weekly with expiry risk classification.
- Block promotion if renewal cannot be validated in staging.
- Keep post-rotation proof artifacts: cert hashes, handshake logs, and service health snapshot.