How to create, import, renew, and use certificates and keys on Korthveil, for the web console, VPNs, RADIUS and NAC, and services. Everything is under System › Certificates. Certificates are stored in Korthveil's own database. Which service uses which certificate is configuration, which you save and commit like any other change.
| You want | Use | Where the private key comes from |
|---|---|---|
| A certificate browsers trust for the web console, from a public CA | Let's Encrypt (ACME) | Made on the firewall, renewed automatically |
| A certificate from your registrar or a commercial CA | Signing request (CSR), then Import from your registrar or CA | Made on the firewall; never leaves it |
| To install a certificate you already have (zip, tar.gz, pfx, pem) | Import from your registrar or CA | In the bundle |
| Your own private PKI for internal services, Wi-Fi (NAC), VPN users | Create a local CA, then Issue from a local CA | Made on the firewall |
| A quick test certificate | Self-signed | Made on the firewall |
Keys are generated on the firewall: ECDSA P-256 by default, or P-384, RSA 2048, or RSA 3072, all FIPS-approved. A key is never shown or exported. The one exception is a device certificate (use: Client), which can be downloaded once as a password-protected .p12 to install on a laptop or phone (§5).

Choosing a certificate is a setting:
Renewals deploy themselves:
The Used by column shows where each certificate is in use. A certificate that is in use cannot be deleted.
Let's Encrypt (ACME) needs no purchase. It proves the domain through Cloudflare DNS (DNS-01) or HTTP, and renews by itself:

www.example.com), the common name, and DNS names, then click Create. The firewall makes the private key and the request.
www.example.com.csr, and paste or upload it at your registrar or CA.
Import from your registrar or CA takes the download exactly as it came:
.zip, .tar.gz/.tgz, .tar, or a single .pfx/.p12, .pem, .crt, .cer, .ca-bundle, or .key file, up to 8 MB.__MACOSX folders.*.example.com becomes wildcard.example.com) unless you give one.nac-ca, common name "Korthveil NAC CA". Its key never leaves the firewall and is never downloadable.nac-radius, use Server, and DNS name radius.korthveil.lan.laptop-1, use Client (VPN users, devices).laptop-1.p12 downloads, and a password is shown once. Copy it to the device, install it with that password, and delete the file. The download is recorded in the Audit log (certificate.download-key).nac-ca). Devices need it to check the server: on Windows it goes in Trusted Root, on macOS and iOS in the profile, on Android under "CA certificate".Only Client certificates can be downloaded with their key. Server certificates, CAs, and the web console's certificate cannot.
| Message | Meaning |
|---|---|
| "a certificate named X exists; choose Replace…" | You imported the same name again; tick Replace for a renewal |
| "the bundle has no private key for X, and no certificate request on this firewall matches it" | The key was made elsewhere: add the .key file, or a .pfx with its password |
| "the private key is encrypted" | Export it unencrypted, or as a .pfx |
| "only device (client) certificates can be downloaded with their key" | Expected for server certificates and CAs |
| "certificate in use by …" when deleting | Choose another certificate there first |
See also: adr/0026 (certificate store), adr/0057 (bundles, device downloads, certificates for add-ins).