Certificate Management¶
PKI Operations — Request, Revoke, Import, Export, and CRL Management
Document Version: 1.2.0
Last Updated: 2026-06-14
1. Certificate Lifecycle¶
graph LR
A["📝 Request<br/>(CSR)"] --> B["⏳ Approval"]
B --> C["✅ Issuance"]
C --> D["🔒 Active"]
D --> E["🔄 Renewal"]
E --> C
D --> F["❌ Revocation"]
F --> G["📜 CRL Update"]
D --> H["⏰ Expiration"]
classDef request fill:#EBF5FB,stroke:#2196F3,stroke-width:2px,color:#1565C0
classDef active fill:#E8F5E9,stroke:#4CAF50,stroke-width:2px,color:#2E7D32
classDef warning fill:#FFF8E1,stroke:#FF9800,stroke-width:2px,color:#E65100
classDef danger fill:#FFEBEE,stroke:#F44336,stroke-width:2px,color:#C62828
class A,B request
class C,D active
class E,H warning
class F,G danger
2. Requesting a Certificate¶
Via Web Interface¶
- Navigate to Certificates → Request Certificate
- Choose a Certificate Template.
| Template | Key Usage | Extended Key Usage | Typical Validity |
|---|---|---|---|
| Web Server | Digital Signature, Key Encipherment | Server Authentication | 1 year |
| Client Auth | Digital Signature | Client Authentication | 1 year |
| Code Signing | Digital Signature | Code Signing | 2 years |
| Email (S/MIME) | Digital Signature, Key Encipherment | Email Protection | 1 year |
- Select a request source:
- Upload CSR when your tooling already generated the private key and CSR.
- Generate in MazeVault when MazeVault should create the private key and CSR.
- Generate in Azure Key Vault when the key must remain inside Azure Key Vault and only the CSR is exposed for signing.
- Fill in the request details:
- Common Name (CN): Primary domain or identifier.
- Template subject fields: Review the subject attributes inherited from the template.
- Additional SANs: Add allowed DNS, IP, email, or URI SAN entries as permitted by the template.
- Key custody: For MazeVault-generated requests, keep the key in MazeVault or store it through a configured secret manager integration. For Azure Key Vault generation, select the Azure Key Vault integration that will own the key.
- Submit the request. Depending on approval policy, the request is either issued immediately or waits for approval.
Via API¶
curl -X POST https://vault.example.com/api/v1/certificates/csr \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"template_id": "550e8400-e29b-41d4-a716-446655440010",
"project_id": "550e8400-e29b-41d4-a716-446655440001",
"requested_cn": "api.example.com",
"csr_source_mode": "mazevault_generated",
"requested_san": {
"dns_names": ["api.example.com", "api-internal.example.com"]
},
"requested_subject": {
"common_name": "api.example.com",
"organization": "Example Corp"
},
"requested_key_algorithm": "RSA",
"requested_key_size": 2048,
"key_storage_mode": "local"
}'
For Azure Key Vault-native generation, set csr_source_mode to azure_key_vault_generated and include key_integration_id for the Azure Key Vault integration that should own the key material.
3. Certificate Approval¶
Depending on your organization's policy:
| Policy | Behavior |
|---|---|
| Auto-approve | Certificate issued immediately after request |
| Admin approval | Certificate enters pending_approval state; an administrator must approve |
| Manager approval | Project manager can approve certificates for their project |
Approving a Request¶
- Navigate to Certificates → Pending Requests
- Review the certificate details
- Click Approve or Reject
4. Revoking a Certificate¶
When to Revoke¶
- Private key has been compromised
- Certificate holder's affiliation has changed
- Certificate has been superseded by a new one
- Service using the certificate has been decommissioned
Revocation Procedure¶
- Navigate to Certificates → Active and find the certificate
- Click Revoke
- Select a Revocation Reason (RFC 5280):
keyCompromise— Private key is compromisedaffiliationChanged— Subject's affiliation changedsuperseded— Replaced by a new certificatecessationOfOperation— Service decommissionedcertificateHold— Temporary hold (can be unreleased)- Add an optional comment
- Click Confirm Revocation
The CRL is automatically regenerated after revocation.
Unrevoking a Certificate¶
Certificates revoked with reason certificateHold can be unreleased:
- Navigate to Certificates → Revoked and find the certificate
- Click Unrevoke
- Confirm the action
5. Importing Certificates¶
Single Certificate Import¶
- Navigate to Certificates → Import
- Upload or paste:
- Certificate (PEM format, required)
- Private Key (PEM format, optional)
- CA Chain (PEM format, optional)
- Select the target project
- Click Import
Bulk Import (PEM Bundle)¶
- Navigate to Certificates → Import → Bulk Import
- Upload a PEM bundle containing multiple certificates
- Select the target project
- Click Import
The system parses the bundle, identifies individual certificates, and imports them with automatic chain detection.
Renewal Preparation After Import¶
- If an imported certificate is linked to a managed CA account and meets rotation prerequisites, MazeVault can prepare renewal metadata automatically.
- Automatically prepared rotation configurations stay disabled until an operator explicitly enables them. This prevents silent private-key rotation immediately after import.
- The initial renewal lead time is resolved from the effective certificate, template, and CA-account policy hierarchy, so imported certificates inherit the intended renewal window instead of a hidden default.
Per-Certificate Renewal Key Policy¶
For renewable certificates, you can override key handling on a per-certificate basis:
Regenerateissues a new private key during renewal.Reusekeeps the current key material when the provider, custody mode, and downstream deployment path support reuse.- Leaving the value unset defers to the template or higher-level policy.
Use Reuse only when downstream systems require key continuity or re-enrollment overhead is unacceptable.
Readiness Review Before Enabling Automation¶
- Review the Project Rotations view before enabling certificate automation.
- Renewal and deployment resources now expose inline readiness and preflight state.
Manual Review Requiredmeans MazeVault cannot validate a target automatically and an operator should confirm the deployment path before production rollout.
6. Exporting Certificates¶
Export Formats¶
| Format | Extension | Includes Key | Use Case |
|---|---|---|---|
| PEM | .pem, .crt |
Optional | Linux/Unix servers, Apache, Nginx |
| DER | .der, .cer |
No | Java applications, Windows |
| PKCS#12 | .p12, .pfx |
Yes (password-protected) | Windows, Java KeyStore import |
Export Procedure¶
- Navigate to the certificate detail page
- Click Export
- Select format and options:
- Include CA chain
- Include private key (requires
certificates.export_keypermission) - Set password (for PKCS#12)
- Download the file
Private Key Export
Exporting a certificate with its private key is a security-sensitive operation recorded in the audit log. Ensure the private key is transferred securely.
7. ACME Certificate Automation¶
MazeVault includes a built-in ACME server (RFC 8555) that enables automated certificate issuance directly from Kubernetes using cert-manager.
Quick Overview¶
- Generate EAB credentials in MazeVault (Organization Settings → ACME Access)
- Create a Kubernetes Secret with the HMAC key
- Deploy a ClusterIssuer pointing to your MazeVault ACME directory
- Annotate Ingresses or create
Certificateresources — cert-manager handles the rest
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: mazevault-issuer
spec:
acme:
server: https://vault.example.com/api/acme/directory
externalAccountBinding:
keyID: "YOUR_EAB_KEY_ID"
keySecretRef:
name: mazevault-eab-secret
key: secret
privateKeySecretRef:
name: mazevault-acme-account-key
solvers:
- http01:
ingress:
ingressClassName: nginx
Internal domains (.local, .internal, .lan, .corp) are auto-approved without HTTP-01 challenge.
Full ACME Guide
For step-by-step instructions, YAML examples, ACME profiles, and troubleshooting, see the dedicated ACME Certificate Automation Guide.
8. CRL Management¶
Certificate Revocation List (CRL)¶
MazeVault generates CRLs automatically when certificates are revoked. CRLs are available at:
| Format | URL |
|---|---|
| DER | https://vault.example.com/api/v1/crl |
| PEM | https://vault.example.com/api/v1/crl/pem |
CRL Distribution Point¶
Configure the CRL Distribution Point in your certificates to point to your MazeVault CRL URL. This is automatically included in certificates issued by MazeVault CAs.
Force CRL Regeneration¶
If needed, regenerate the CRL manually:
- Navigate to Certificates → CRL
- Click Regenerate CRL
- Select type: Full or Delta
8. OCSP Validation¶
OCSP provides real-time certificate status checking as an alternative to CRL:
| Feature | CRL | OCSP |
|---|---|---|
| Real-time | ❌ (periodic generation) | ✅ |
| Bandwidth | Higher (full list) | Lower (per-certificate) |
| Privacy | Client downloads all | Client queries specific cert |
| Offline support | ✅ (cached CRL) | ❌ (requires connectivity) |
OCSP URL¶
Testing OCSP¶
Related¶
- Certificates API — API reference
- Secrets Management — Managing secrets
- TLS Configuration — TLS setup