CertificatesBeginner

Self-Signed Certificates

Understand when self-signed certificates are appropriate and their security implications.

Interactive Demo
Self-Signed Certificates

Self-Signed vs CA-Signed Certificates

CA-Signed Certificate

YouCertificate Authority
↓ CA validates your identity
CA signs withTHEIR private key
↓ Browsers trust CA
Browsers trust YOU automatically

Self-Signed Certificate

YouYou (same entity)
↓ No external validation
You sign withYOUR private key
↓ No chain of trust
Browsers show warnings

When to Use Self-Signed Certificates

Good Use Cases

Local Development

localhost, 127.0.0.1, dev servers

Internal Testing

QA environments, staging servers

Lab/Sandbox Networks

Isolated test networks

Learning & Experimentation

Understanding TLS/certificates

IoT on Private Networks

Devices never exposed to internet

Air-Gapped Systems

Networks with no internet access

Internal Tools

With manual trust distribution

Never Use For

Public Websites

Use Let's Encrypt instead (free!)

Production APIs

Customers can't trust your cert

E-commerce

Payment processors require CA certs

Public Services

Users see scary warnings

Mobile Apps

Certificate pinning is better

Self-Signed vs Let's Encrypt

AspectSelf-SignedLet's Encrypt
CostFreeFree
Browser TrustManual setupAutomatic
Setup TimeInstantMinutes
Works on localhostYesNo
Works offlineYesNo
RenewalManualAuto (90 days)
Public websitesNeverYes
Domain requiredNoYes

Bottom Line: Use Let's Encrypt for anything public-facing. Use self-signed only for local development and internal/isolated environments.

Browser Warnings (Expected!)

Your connection is not private

NET::ERR_CERT_AUTHORITY_INVALID

This warning is expected and correct for self-signed certificates. The browser is warning users that no trusted CA vouched for this certificate. For development, you can proceed anyway or add the cert to your system trust store.