-
-
Notifications
You must be signed in to change notification settings - Fork 23
Certificate Management
Manage automatic ACME certificates and imported custom certificates in Caddy Proxy Manager.
- How Certificates Work
- Certificates Page Overview
- ACME Certificates
- Import Custom Certificates
- CA Certificates
- Renewal and Monitoring
- Security Considerations
- Troubleshooting
Caddy Proxy Manager supports three certificate paths:
- Automatic ACME (recommended)
- Caddy obtains and renews certificates automatically (Let's Encrypt / ZeroSSL)
- Used when a proxy host is set to
Managed by Caddy (Auto)
- Imported custom certificates
- You provide certificate PEM + private key PEM
- Use for internal CAs, pre-issued wildcard certs, or compliance-driven workflows
- Built-in CA certificates
- Generate your own CA root and issue internal client certificates
- Useful for mTLS or testing without a third-party CA
The Certificates page has three tabs:
- ACME Certificates
- Proxy hosts currently using automatic certificate management
- Shows domains and host enabled/disabled status
- Server-side paginated
- Imported Certificates
- Custom certificates stored in the application database
- Shows issuer, expiry, covered domains, and which hosts use each cert
- CA Certificates
- Internal CA roots you have created
- Issue and manage client certificates signed by each CA
- Download CA cert, issue new client certs, view existing issued certs
For each auto-managed proxy host, the table displays:
- Proxy host name
- Domains
- Host enabled/disabled status
Caddy manages ACME certificate issuance and renewal entirely on its own. The ACME tab lists which proxy hosts use automatic certificates so you can verify coverage.
ACME table pagination is server-side.
- Default page size:
25 - URL param:
?page=N
Use custom import when ACME is not suitable.
- Open Certificates.
- Scroll to Import Custom Certificate.
- Provide:
- Certificate Name
- Domains (one per line)
- Certificate PEM (full chain recommended)
- Private Key PEM
- Click Import Certificate.
For each imported certificate, you can:
- Review issuer and expiry
- See covered domains
- See which proxy hosts currently reference it
- Update fields
- Delete the certificate
When editing, keep certificate/key pairs matched.
The built-in CA lets you create internal certificate authorities and issue client certificates.
- Open Certificates → CA Certificates.
- Click Create CA Certificate.
- Provide a name and optional metadata (organization, country, etc.).
- Click Create.
The CA root certificate can be downloaded and installed in browsers or systems that need to trust certificates issued by this CA.
- Click the menu on a CA row and select Issue Client Certificate.
- Provide a name (used as the Common Name).
- Click Issue.
- Download the issued certificate and private key — they are not stored server-side after download.
Click View Issued Certs on a CA row to list all certificates issued by that CA, including expiry status.
- mTLS (mutual TLS) between services inside a trusted network
- Internal testing without purchasing a certificate
- Short-lived client credentials that need to be revoked quickly
- Renewed automatically by Caddy
- Renewal attempts start before expiration
- No manual renew action is usually required
- Not auto-renewed
- You must replace them before expiry
Caddy logs:
docker compose logs caddy | grep -i acmePublic endpoint check:
echo | openssl s_client -connect your-domain.com:443 2>/dev/null | openssl x509 -noout -issuer -datesImported private keys are stored in SQLite and are not encrypted at rest by default.
Recommendations:
- Restrict data volume/file permissions
- Encrypt backups
- Rotate imported certificates regularly
- Limit host access to backup artifacts
- ACME cert material lives in Caddy's data volume
- Imported cert material lives in the app database
Checks:
- Domain resolves to your public IP
- Ports
80/443reachable (for HTTP-01/TLS-ALPN-01) - DNS provider configured in Settings → DNS Providers for wildcard or internal-only domains (see DNS Provider Configuration)
- ACME email configured in Settings
Verify key/cert match:
openssl x509 -noout -modulus -in cert.pem | openssl md5
openssl rsa -noout -modulus -in key.pem | openssl md5Hashes must match.
- DNS Provider Configuration
- Feature Guide Proxy Hosts
- Environment Variables Reference
- Security Configuration
- Troubleshooting
Need help? Open an issue with logs and non-sensitive certificate metadata (never share private keys).