Skip to content

TLS in Practice

SourceCostValidationTrustBest For
Let’s EncryptFreeAutomated (ACME)UniversalPublic-facing services
DigiCertPaidOrganization, EVUniversalEnterprise, extended validation
Self-signedFreeNoneInternalDevelopment, internal services
Internal CAFreeInternalInternalCorporate networks
Cloud providerPaidDNS/HTTP validationUniversalServices hosted on that provider
Terminal window
# Generate a self-signed certificate (development only)
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt \
-days 365 -nodes \
-subj "/CN=localhost/O=Dev/C=US"
# Generate with SAN (Subject Alternative Names)
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt \
-days 365 -nodes \
-subj "/CN=localhost" \
-addext "subjectAltName=DNS:localhost,IP:127.0.0.1"