TLS Cipher Categories and Configuration Examples
Use this reference to understand strong, medium and weak cipher families, choose an appropriate policy for each TLS version, and apply safer web-server settings.
Recommended baseline
Enable TLS 1.3 and TLS 1.2. Disable TLS 1.1, TLS 1.0, SSLv3 and SSLv2.
For TLS 1.2, prefer ECDHE with AES-GCM or ChaCha20-Poly1305. TLS 1.3 cipher suites do not include certificate authentication or key-exchange names because those are negotiated separately.
Recommendation by TLS version
| Version | Rating | Action | Preferred ciphers | Recommendation |
|---|---|---|---|---|
| TLS 1.3 | Strong | Enable | TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256 | Best default. Keep secure platform defaults unless compliance requires a narrower list. |
| TLS 1.2 | Strong | Enable | ECDHE + AES-GCM or ECDHE + ChaCha20-Poly1305 | Retain for broad compatibility. Require forward secrecy and AEAD. |
| TLS 1.1 | Weak | Disable | Legacy CBC-oriented suites | Deprecated. Do not try to make it acceptable by choosing a better cipher. |
| TLS 1.0 | Weak | Disable | Legacy CBC/RC4-era suites | Deprecated and exposed to legacy protocol weaknesses. |
| SSLv3 / SSLv2 | Insecure | Disable | Obsolete suites | Cryptographically obsolete and unsuitable for public services. |
Cipher categories
Strong
Recommended for production. AEAD encryption with forward secrecy where applicable.
| Cipher suite / family | TLS version | Assessment |
|---|---|---|
TLS_AES_128_GCM_SHA256 | TLS 1.3 | AES-128-GCM AEAD; efficient and broadly recommended. |
TLS_AES_256_GCM_SHA384 | TLS 1.3 | AES-256-GCM AEAD; useful where a 256-bit policy is required. |
TLS_CHACHA20_POLY1305_SHA256 | TLS 1.3 | Fast AEAD option, especially useful on devices without AES acceleration. |
ECDHE-ECDSA-AES128-GCM-SHA256 | TLS 1.2 | ECDHE forward secrecy, ECDSA authentication and AES-GCM. |
ECDHE-RSA-AES128-GCM-SHA256 | TLS 1.2 | ECDHE forward secrecy, RSA certificate and AES-GCM. |
ECDHE-ECDSA-AES256-GCM-SHA384 | TLS 1.2 | ECDHE forward secrecy, ECDSA authentication and AES-256-GCM. |
ECDHE-RSA-AES256-GCM-SHA384 | TLS 1.2 | ECDHE forward secrecy, RSA certificate and AES-256-GCM. |
ECDHE-ECDSA-CHACHA20-POLY1305 | TLS 1.2 | ECDHE forward secrecy with ChaCha20-Poly1305 AEAD. |
ECDHE-RSA-CHACHA20-POLY1305 | TLS 1.2 | ECDHE forward secrecy, RSA certificate and ChaCha20-Poly1305. |
Medium
Use only for a documented compatibility need. Prefer replacing these with strong suites.
| Cipher suite / family | TLS version | Assessment |
|---|---|---|
DHE-RSA-AES128-GCM-SHA256 | TLS 1.2 | AEAD and forward secrecy, but finite-field DHE is slower and needs strong DH parameters. |
DHE-RSA-AES256-GCM-SHA384 | TLS 1.2 | AEAD and forward secrecy; ECDHE is normally preferred. |
ECDHE-RSA-AES128-SHA256 | TLS 1.2 | Forward secrecy but CBC mode; retain only for necessary legacy clients. |
ECDHE-RSA-AES256-SHA384 | TLS 1.2 | Forward secrecy but CBC mode; not a modern first choice. |
ECDHE-ECDSA-AES128-SHA256 | TLS 1.2 | CBC-mode compatibility suite with ECDHE. |
ECDHE-ECDSA-AES256-SHA384 | TLS 1.2 | CBC-mode compatibility suite with ECDHE. |
Weak
Disable. These lack forward secrecy, use CBC/SHA-1, or depend on deprecated protocols.
| Cipher suite / family | TLS version | Assessment |
|---|---|---|
AES128-GCM-SHA256 | TLS 1.2 | Static RSA key exchange; no forward secrecy. |
AES256-GCM-SHA384 | TLS 1.2 | Static RSA key exchange; no forward secrecy. |
AES128-SHA | TLS 1.0–1.2 | Static RSA, CBC mode and SHA-1 MAC. |
AES256-SHA | TLS 1.0–1.2 | Static RSA, CBC mode and SHA-1 MAC. |
ECDHE-RSA-AES128-SHA | TLS 1.0–1.2 | Forward secrecy but legacy CBC/SHA-1 construction. |
ECDHE-RSA-AES256-SHA | TLS 1.0–1.2 | Forward secrecy but legacy CBC/SHA-1 construction. |
CAMELLIA128-SHA / CAMELLIA256-SHA | TLS 1.0–1.2 | Legacy CBC/SHA-1 family; generally unnecessary for web compatibility. |
SEED-SHA | TLS 1.0–1.2 | Legacy CBC/SHA-1 suite with limited modern need. |
Insecure
Remove immediately. These provide broken, prohibited, export-grade or no encryption.
| Cipher suite / family | TLS version | Assessment |
|---|---|---|
RC4-SHA / RC4-MD5 | Legacy | RC4 is cryptographically broken and prohibited for TLS. |
DES-CBC-SHA | Legacy | Single DES has inadequate key strength. |
DES-CBC3-SHA / 3DES | Legacy | Deprecated 64-bit block cipher exposed to SWEET32-style risks. |
NULL-SHA / eNULL | Legacy | No encryption; traffic is readable. |
EXPORT / EXP / 40-bit suites | Legacy | Deliberately weakened export-grade cryptography. |
aNULL / anonymous DH | Legacy | No server authentication; vulnerable to man-in-the-middle attacks. |
MD5-based suites | Legacy | MD5 is broken and unsuitable for TLS integrity/authentication. |
Enable and disable examples
Replace example.com and validate syntax against your installed software version before deployment.
Nginx
ssl_protocols TLSv1.2 TLSv1.3;
# TLS 1.2 and older cipher directive
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off;
# OpenSSL 1.1.1+/supported Nginx builds only
ssl_conf_command Ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256;Apache HTTP Server
SSLProtocol -all +TLSv1.2 +TLSv1.3
# TLS 1.2 suites
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
# Apache/OpenSSL versions that support TLS 1.3-specific syntax
SSLCipherSuite TLSv1.3 TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256HAProxy
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256OpenSSL test commands
# Confirm TLS 1.3
openssl s_client -connect example.com:443 -servername example.com -tls1_3
# Confirm TLS 1.2 with a strong cipher
openssl s_client -connect example.com:443 -servername example.com -tls1_2 -cipher ECDHE-RSA-AES128-GCM-SHA256
# A disabled legacy protocol should fail
openssl s_client -connect example.com:443 -servername example.com -tls1Microsoft IIS / Windows Server
Use Windows Schannel policy or Group Policy to disable TLS 1.0/1.1 and weak cipher suites. Cipher-suite availability and ordering vary substantially by Windows Server release, so apply a policy designed for that exact version, test application compatibility, and restart affected services or the server when required.
CDN or managed hosting
Choose a “Modern” or “TLS 1.2 and 1.3 only” security profile in the provider dashboard. Confirm the origin server is also hardened; a secure CDN edge does not automatically secure direct origin access.
Important deployment notes
- Test configuration syntax before reloading the service and keep a rollback copy.
- Cipher names and supported directives depend on the installed web server and OpenSSL version.
- A TLS 1.3-only policy is strongest but can break older clients. TLS 1.2 plus TLS 1.3 is the usual compatibility baseline.
- The tables cover commonly deployed cipher families, not every historical or vendor-specific suite ever registered.
Your feedback matters
