TLS Version Comparison
Comparison reference for TLS 1.0/1.1/1.2/1.3 covering versions, cipher suites, handshake, certificates, extensions, deprecated features, and best practices
49 commands
TLS 1.0 (1999)Successor to SSL 3.0. Deprecated due to known vulnerabilities
ssl_protocols TLSv1; # 非推奨TLS 1.1 (2006)Added CBC attack mitigations. Now deprecated
ssl_protocols TLSv1.1; # 非推奨TLS 1.2 (2008)AEAD cipher suite support. Still widely used
ssl_protocols TLSv1.2;TLS 1.3 (2018)Faster handshake, mandatory forward secrecy. Recommended
ssl_protocols TLSv1.3;TLS 1.3 0-RTTReduce latency with TLS 1.3 0-RTT resumption
ssl_early_data on; # リプレイ攻撃に注意バージョン確認 (openssl)Check TLS version with openssl
openssl s_client -connect example.com:443 -tls1_3バージョン確認 (nmap)Scan supported TLS versions with nmap
nmap --script ssl-enum-ciphers -p 443 example.comプロトコルネゴシエーションNegotiate TLS version between client and server
ClientHello: supported_versions: [TLS 1.3, TLS 1.2]AES-128-GCMRecommended AEAD cipher for TLS 1.2/1.3. Fast and secure
TLS_AES_128_GCM_SHA256AES-256-GCM256-bit AES-GCM. Highest level of encryption strength
TLS_AES_256_GCM_SHA384CHACHA20-POLY1305AEAD cipher fast on mobile/ARM environments
TLS_CHACHA20_POLY1305_SHA256ECDHE鍵交換Elliptic curve Diffie-Hellman for forward secrecy
ECDHE-ECDSA-AES256-GCM-SHA384暗号スイート順序Control cipher suite priority on server side
ssl_prefer_server_ciphers on;暗号スイート一覧表示List supported cipher suites with OpenSSL
openssl ciphers -v 'TLSv1.3'Nginx暗号設定Configure recommended cipher suites in Nginx
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';Apache暗号設定Configure recommended cipher suites in Apache
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:...TLS 1.2 フルハンドシェイクTLS 1.2 requires 2-RTT full handshake
ClientHello -> ServerHello -> Certificate -> DoneTLS 1.3 フルハンドシェイクTLS 1.3 completes handshake in 1-RTT
ClientHello+KeyShare -> ServerHello+Finishedセッション再開Speed up reconnection with session tickets
ssl_session_tickets on; ssl_session_timeout 1d;ClientHelloClient sends supported protocols, ciphers, and extensions
openssl s_client -connect host:443 -msg | head -20ServerHelloServer responds with selected protocol and cipher
ServerHello: TLS 1.3, TLS_AES_256_GCM_SHA384ハンドシェイクデバッグDebug TLS handshake details
openssl s_client -connect host:443 -debug -stateALPNNegotiate protocol with ALPN
openssl s_client -connect host:443 -alpn h2,http/1.1証明書確認Check server certificate details
openssl s_client -connect example.com:443 | openssl x509 -text証明書有効期限確認Check SSL certificate expiration date
openssl s_client -connect host:443 2>/dev/null | openssl x509 -noout -datesLet's Encrypt発行Obtain free SSL certificate with Let's Encrypt
certbot certonly --nginx -d example.comCSR生成Generate Certificate Signing Request (CSR)
openssl req -new -key server.key -out server.csr自己署名証明書Create self-signed certificate for development
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365証明書チェーン検証Verify certificate chain integrity
openssl verify -CAfile ca-bundle.crt server.crtECDSA証明書Generate ECDSA certificate (faster than RSA)
openssl ecparam -genkey -name prime256v1 -out key.pemSNI (Server Name Indication)Host multiple certificates on a single IP
openssl s_client -connect host:443 -servername example.comOCSP StaplingCache certificate revocation check on server side
ssl_stapling on; ssl_stapling_verify on;Certificate TransparencyEnsure certificate transparency with CT logs
Expect-CT: max-age=86400, enforceEncrypted ClientHello (ECH)Encrypt SNI in ClientHello with TLS 1.3
ssl_ech on; # 実験的機能Key ShareInclude key share parameters in ClientHello for TLS 1.3
supported_groups: x25519, secp256r1SSL 2.0 無効化SSL 2.0 has critical vulnerabilities, must be disabled
ssl_protocols TLSv1.2 TLSv1.3; # SSL無効SSL 3.0 無効化Disable SSL 3.0 vulnerable to POODLE attack
SSLProtocol all -SSLv3RC4無効化RC4 cipher is breakable and must not be used
ssl_ciphers '!RC4';3DES無効化Disable 3DES vulnerable to Sweet32 attack
ssl_ciphers '!3DES';MD5無効化Do not use MD5 for hashing due to collision attacks
ssl_ciphers '!MD5';SHA-1非推奨SHA-1 vulnerable to collision attacks, not for certificates
openssl x509 -in cert.pem -text | grep sha1 # 検出静的RSA鍵交換非推奨Disable static RSA key exchange (no forward secrecy)
ssl_ciphers '!kRSA';Mozilla SSL Configuration GeneratorGenerate recommended config with Mozilla SSL Config Generator
https://ssl-config.mozilla.org/SSL Labs テストTest server TLS configuration with SSL Labs
https://www.ssllabs.com/ssltest/testssl.shComprehensive TLS testing from command line
testssl.sh https://example.comHSTS設定Enable HTTP Strict Transport Security
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload証明書自動更新Auto-renew Let's Encrypt certificates with cron
0 0 1 * * certbot renew --quietCAA レコード設定Restrict allowed CAs with DNS CAA record
example.com. CAA 0 issue "letsencrypt.org"TLS 1.2+1.3 推奨設定Recommended config enabling only TLS 1.2 and 1.3
ssl_protocols TLSv1.2 TLSv1.3;