TLSバージョン比較表
TLS 1.0/1.1/1.2/1.3の比較リファレンス。バージョン、暗号スイート、ハンドシェイク、証明書、拡張機能、非推奨機能、ベストプラクティスを網羅
49 件のコマンド
TLS 1.0 (1999)SSL 3.0の後継。既知の脆弱性が多く非推奨
ssl_protocols TLSv1; # 非推奨TLS 1.1 (2006)CBC攻撃への対策を追加。現在は非推奨
ssl_protocols TLSv1.1; # 非推奨TLS 1.2 (2008)AEAD暗号スイート対応。現在も広く使用
ssl_protocols TLSv1.2;TLS 1.3 (2018)ハンドシェイク高速化、前方秘匿性必須。推奨バージョン
ssl_protocols TLSv1.3;TLS 1.3 0-RTTTLS 1.3の0-RTT再接続でレイテンシを削減
ssl_early_data on; # リプレイ攻撃に注意バージョン確認 (openssl)接続先のTLSバージョンをopensslで確認
openssl s_client -connect example.com:443 -tls1_3バージョン確認 (nmap)nmapでサポートされるTLSバージョンをスキャン
nmap --script ssl-enum-ciphers -p 443 example.comプロトコルネゴシエーションクライアントとサーバー間でTLSバージョンを交渉
ClientHello: supported_versions: [TLS 1.3, TLS 1.2]AES-128-GCMTLS 1.2/1.3推奨のAEAD暗号。高速で安全
TLS_AES_128_GCM_SHA256AES-256-GCM256ビットAES-GCM。最高レベルの暗号強度
TLS_AES_256_GCM_SHA384CHACHA20-POLY1305モバイル/ARM環境で高速なAEAD暗号
TLS_CHACHA20_POLY1305_SHA256ECDHE鍵交換楕円曲線Diffie-Hellmanで前方秘匿性を実現
ECDHE-ECDSA-AES256-GCM-SHA384暗号スイート順序サーバー側で暗号スイートの優先順位を制御
ssl_prefer_server_ciphers on;暗号スイート一覧表示OpenSSLでサポートされる暗号スイートを一覧表示
openssl ciphers -v 'TLSv1.3'Nginx暗号設定Nginxで推奨暗号スイートを設定
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';Apache暗号設定Apacheで推奨暗号スイートを設定
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:...TLS 1.2 フルハンドシェイクTLS 1.2は2-RTTのフルハンドシェイクが必要
ClientHello -> ServerHello -> Certificate -> DoneTLS 1.3 フルハンドシェイクTLS 1.3は1-RTTでハンドシェイク完了
ClientHello+KeyShare -> ServerHello+Finishedセッション再開セッションチケットで再接続を高速化
ssl_session_tickets on; ssl_session_timeout 1d;ClientHelloクライアントが対応プロトコル・暗号・拡張を送信
openssl s_client -connect host:443 -msg | head -20ServerHelloサーバーが選択したプロトコル・暗号を応答
ServerHello: TLS 1.3, TLS_AES_256_GCM_SHA384ハンドシェイクデバッグTLSハンドシェイクの詳細をデバッグ出力
openssl s_client -connect host:443 -debug -stateALPNApplication-Layer Protocol Negotiationでプロトコルを交渉
openssl s_client -connect host:443 -alpn h2,http/1.1証明書確認サーバー証明書の詳細を確認
openssl s_client -connect example.com:443 | openssl x509 -text証明書有効期限確認SSL証明書の有効期限を確認
openssl s_client -connect host:443 2>/dev/null | openssl x509 -noout -datesLet's Encrypt発行Let's Encryptで無料SSL証明書を取得
certbot certonly --nginx -d example.comCSR生成証明書署名要求(CSR)を生成
openssl req -new -key server.key -out server.csr自己署名証明書開発用の自己署名証明書を作成
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365証明書チェーン検証証明書チェーンの完全性を検証
openssl verify -CAfile ca-bundle.crt server.crtECDSA証明書RSAより高速なECDSA証明書を生成
openssl ecparam -genkey -name prime256v1 -out key.pemSNI (Server Name Indication)1つのIPで複数の証明書をホスト
openssl s_client -connect host:443 -servername example.comOCSP Stapling証明書失効確認をサーバー側でキャッシュ
ssl_stapling on; ssl_stapling_verify on;Certificate TransparencyCTログで証明書の透明性を確保
Expect-CT: max-age=86400, enforceEncrypted ClientHello (ECH)TLS 1.3でClientHelloのSNIを暗号化
ssl_ech on; # 実験的機能Key ShareTLS 1.3で鍵共有パラメータをClientHelloに含める
supported_groups: x25519, secp256r1SSL 2.0 無効化SSL 2.0は重大な脆弱性があり無効化必須
ssl_protocols TLSv1.2 TLSv1.3; # SSL無効SSL 3.0 無効化POODLE攻撃に脆弱なSSL 3.0を無効化
SSLProtocol all -SSLv3RC4無効化RC4暗号は解読可能であり使用禁止
ssl_ciphers '!RC4';3DES無効化Sweet32攻撃に脆弱な3DESを無効化
ssl_ciphers '!3DES';MD5無効化衝突耐性のないMD5をハッシュに使用しない
ssl_ciphers '!MD5';SHA-1非推奨SHA-1は衝突攻撃に脆弱で証明書に使用不可
openssl x509 -in cert.pem -text | grep sha1 # 検出静的RSA鍵交換非推奨前方秘匿性がない静的RSA鍵交換を無効化
ssl_ciphers '!kRSA';Mozilla SSL Configuration GeneratorMozillaのSSL設定ジェネレーターで推奨設定を生成
https://ssl-config.mozilla.org/SSL Labs テストSSL LabsでサーバーのTLS設定をテスト
https://www.ssllabs.com/ssltest/testssl.shコマンドラインでTLS設定を包括的にテスト
testssl.sh https://example.comHSTS設定HTTP Strict Transport Securityを有効化
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload証明書自動更新Let's Encrypt証明書をcronで自動更新
0 0 1 * * certbot renew --quietCAA レコード設定DNS CAAレコードで発行可能なCAを制限
example.com. CAA 0 issue "letsencrypt.org"TLS 1.2+1.3 推奨設定TLS 1.2と1.3のみを有効化する推奨設定
ssl_protocols TLSv1.2 TLSv1.3;