cheat-sheets

TLS (Transport Layer Security)

TLS encrypts and authenticates traffic between two parties. It is the successor to SSL, which is deprecated and must not be used. HTTPS is HTTP over TLS.

Related: TLS Handshake, SSL Certificates Cheat-Sheet, SSL Security Cheat-Sheet, OpenSSL, Certutil, DNS over TLS (DoT)

What TLS Provides #

PROPERTYHOW
ConfidentialitySymmetric encryption of the session (AES-GCM, ChaCha20-Poly1305)
IntegrityAuthenticated encryption or MAC detects tampering
AuthenticationServer (and optionally client) proves identity with an X.509 certificate

Versions #

VERSIONSTATUS
SSL 2.0 / 3.0Broken, disable
TLS 1.0 / 1.1Deprecated (RFC 8996), disable
TLS 1.2Supported, still widely needed
TLS 1.3Current. Faster handshake, only strong ciphers, forward secrecy always

Certificates #

TERMMEANING
CACertificate Authority that signs certificates
Root / IntermediateChain of trust: server cert, intermediate(s), root in the trust store
SANSubject Alternative Name. The hostnames a cert is valid for. Browsers ignore CN
DV / OV / EVDomain / Organisation / Extended Validation
Wildcard*.example.com, covers one label only
mTLSMutual TLS, client also presents a certificate. See mTLS (Mutual TLS)

File formats:

EXTENSIONMEANING
.pemBase64 text, -----BEGIN ...----- blocks. Cert, key or chain
.crt / .cerCertificate (PEM or DER)
.keyPrivate key
.csrCertificate signing request
.derBinary encoding
.pfx / .p12PKCS#12 bundle holding key and certs

Common Ports #

PORTPROTOCOL
443HTTPS
465SMTPS (implicit TLS)
587 / 25SMTP with STARTTLS
993 / 995IMAPS / POP3S
636LDAPS
853DNS over TLS, see DNS over TLS (DoT)

Quick Checks #

COMMANDDESCRIPTION
openssl s_client -connect <HOST>:443 -servername <HOST>Inspect the chain and negotiated protocol
curl -vI https://<HOST>Show handshake details and headers
nmap --script ssl-enum-ciphers -p 443 <HOST>List accepted ciphers
echo | openssl s_client -connect <HOST>:443 2>/dev/null | openssl x509 -noout -datesCertificate expiry

More commands in OpenSSL.

Automating Certificates #

  • Let’s Encrypt via ACME clients: certbot, acme.sh, Caddy, Traefik, cert-manager on Kubernetes.
  • Certificates are short-lived (90 days or less). Automate renewal and monitor expiry.

Hardening Checklist #

  • Enable TLS 1.2 and 1.3 only.
  • Use ECDHE key exchange and AEAD ciphers.
  • Serve the full chain (leaf plus intermediates, not the root).
  • Send Strict-Transport-Security once HTTPS is solid.
  • Redirect HTTP to HTTPS.
  • Test at SSL Labs.
Search all sheets

Tip: / or Ctrl/Cmd+K to open, Esc to close.