Secure Steady
TLS/SSL 通信暗号化 - TLS/SSL(通信暗号化) の使い方・オプション・サンプル

TLS/SSL 通信暗号化 - TLS/SSL(通信暗号化)

インターネット通信を暗号化するプロトコル。HTTPS の基盤技術であり、盗聴・改ざん・なりすましを防ぐ。

概念図

TLS/SSL(通信暗号化) diagram

実例

TLS 接続をテスト

bash
openssl s_client -connect example.com:443 -servername example.com

TLS バージョンと暗号スイートを確認

bash
curl -v https://example.com 2>&1 | grep "SSL connection"

TLS ハンドシェイクの流れ

TLS 1.3 のハンドシェイクは以下の手順で行われます。

  1. ClientHello: クライアントが対応する TLS バージョン・暗号スイート・鍵共有パラメータを送信
  2. ServerHello: サーバーが暗号スイートを選択し、証明書と鍵共有パラメータを返す
  3. 鍵の導出: 双方が共有秘密から暗号化鍵を導出
  4. Finished: ハンドシェイク完了。以降の通信は暗号化される

TLS 1.3 では 1-RTT(1 往復)でハンドシェイクが完了し、TLS 1.2 の 2-RTT から改善されています。

ベストプラクティス

  • TLS 1.3 の使用: 可能な限り TLS 1.3 を使用する。TLS 1.0 / 1.1 は廃止済み
  • 強力な暗号スイート: AES-256-GCM + SHA-384 や ChaCha20-Poly1305 を優先
  • HSTS の設定: Strict-Transport-Security ヘッダで HTTP へのダウングレードを防止
  • 証明書の管理: クラウドではマネージド証明書(ACM 等)で自動管理。オンプレミスでは Let's Encrypt や商用 CA を利用し、有効期限切れに注意
  • Perfect Forward Secrecy(PFS): ECDHE を使用し、サーバー鍵が漏洩しても過去の通信を復号できないようにする

関連トピック