Tutorials · Security Operations

How to Issue TLS Certificates for Internal Devices With a Private CA

Browser warnings on switches, NVRs and internal apps train users to click through security errors. Run a small private certificate authority and give every internal service a trusted certificate.

Advanced18 min6 steps

Before you start

  • A Linux server for the CA (keep it well protected)
  • smallstep step-ca and step CLI
  • A way to distribute the root certificate to company devices (GPO, MDM)

Step by step

  1. Initialise the CA

    step ca init creates a root and intermediate certificate and a provisioner. Store the root key offline if possible.

    step ca init --name "Corp Internal CA" --dns ca.corp.example --address :9000
    
  2. Start the CA service

    Run step-ca as a service on the CA server.

    step-ca $(step path)/config/ca.json
    
  3. Trust the root on company devices

    Distribute root_ca.crt through Group Policy or MDM so browsers trust certificates from your CA.

  4. Issue a certificate for a device

    Create a certificate and key for an internal host name, then upload them to the device's HTTPS settings.

    step ca certificate nvr01.corp.example nvr01.crt nvr01.key
    
  5. Automate renewals

    Short-lived certificates are safer. Servers can renew automatically with step ca renew --daemon, or with ACME clients pointed at your CA.

  6. Track expiry

    Keep a list of every certificate, where it is installed and when it expires, and alert 30 days before.

Commands are generic, industry-standard examples. Exact syntax and menu names vary by model and firmware; check your device's manual on the Documentation page.

Pro tips

  • Use host names, not IP addresses, in certificates and in bookmarks.
  • Never install the CA private key on a normal server or laptop.