Private CA server certificate generator

Issue a server certificate backed by a CA. Generate a fresh private root CA here, or sign with a CA you already own — then install the CA once and every certificate it signs is trusted. Everything runs in your browser; nothing is uploaded.

Private CA server certificate Generate or upload your own CA RSA 2048 · SAN · PEM

A server certificate backed by a CA. Either generate a fresh private CA here, or sign with a CA you already own.

A CA has no browser-imposed lifetime limit, so 10 years (3650 days) is typical for a private root. Use ASCII characters for the name.


Separate entries with commas or spaces. The Common Name is always added automatically. Domains, wildcards and IP addresses are supported.

ca.crt Root CA certificate — install this on your devices
ca.key Root CA private key — store offline, never on the web server
server.key Private key (PEM) — never share it
server.crt Certificate (PEM), signed by the CA above

How to install the CA certificate on your computer

Installing ca.crt into the operating system trust store removes the browser warning for every certificate issued by this CA.

Graphical method

  1. Copy ca.crt to the Windows machine.
  2. Double-click ca.crt, then choose Install Certificate….
  3. Select Local Machine and click Next (confirm the UAC prompt).
  4. Choose Place all certificates in the following storeBrowse…
  5. Pick Trusted Root Certification Authorities, then Next → Finish.
  6. Restart Chrome or Edge — they read the Windows certificate store. Firefox needs the manual import described below.

Alternative: press Win + R, run mmc, then File → Add/Remove Snap-in → Certificates → Computer account → Local computer, and import into Trusted Root Certification Authorities → Certificates.

Command line (Administrator PowerShell or CMD)

certutil -addstore -f "ROOT" ca.crt

rem verify it landed in the store
certutil -store ROOT

rem remove it later (use the CA Common Name)
certutil -delstore ROOT "My Root CA"

Deploy the server certificate in Nginx

sudo cp server.crt /etc/nginx/ssl/server.crt
sudo cp server.key /etc/nginx/ssl/server.key
sudo chmod 600 /etc/nginx/ssl/server.key
server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_cache shared:SSL:10m;
}
sudo nginx -t
sudo systemctl reload nginx

Nginx serves a single file as ssl_certificate. Browsers already trust the CA, so the leaf certificate alone is enough — no chain file is required.

Also try: Self-Signed Certificate Generator · mTLS Certificate Generator · CSR Generator · Certificate Decoder