TLSとは
TLS(トランスポートレイヤーセキュリティ)はコンピュータネットワーク上でセキュアな通信を提供する暗号化プロトコルです。TLSはSSL(セキュアソケットレイヤー)の後継で、HTTPS接続、セキュアなメール送信(STARTTLS)、および多くの他の暗号化インターネットプロトコルの技術です。ブラウザに南京錠アイコンが表示される場合、TLSはデバイスとサーバー間のデータを暗号化するために機能しています。TLSバージョン履歴
| バージョン | 年 | ステータス |
|---|---|---|
| SSL 2.0 | 1995 | 廃止、不安全 |
| SSL 3.0 | 1996 | 廃止、不安全 |
| TLS 1.0 | 1999 | 廃止 |
| TLS 1.1 | 2006 | 廃止 |
| TLS 1.2 | 2008 | 現在の標準 |
| TLS 1.3 | 2018 | 最新、推奨 |
TLSの仕組み
TLSハンドシェイク(TLS 1.2)
クライアント サーバー
│ │
├──── ClientHello ─────────────────► │
│ (サポート暗号、ランダム) │
│ │
│ ◄─── ServerHello ──────────────────┤
│ (選択暗号、証明書) │
│ │
├──── キー交換 ────────────────► │
│ (暗号化前マスター秘密) │
│ │
│ ◄─── Finished ─────────────────────┤
│ │
└──── 暗号化データ ◄──────────────────┘
TLS 1.3改善
- より少ないラウンドトリップ(高速ハンドシェイク)
- 不安全な暗号を削除
- 強制前方秘密
- 暗号化ハンドシェイクメッセージ
TLSコンポーネント
証明書
- サーバーアイデンティティを認証
- 認証局によって発行
- 暗号化用の公開鍵を含む
暗号スイート
使用される暗号化アルゴリズムを定義します:
TLS_AES_256_GCM_SHA384(TLS 1.3)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384(TLS 1.2)
│ │ │ │
│ │ │ └── ハッシュアルゴリズム
│ │ └── 暗号化アルゴリズム
│ └── キー交換
└── プロトコル
TLSユースケース
| アプリケーション | プロトコル | ポート |
|---|---|---|
| ウェブブラウジング | HTTPS | 443 |
| メール(IMAP) | IMAPS | 993 |
| メール(SMTP) | SMTPS | 465 |
| メール送信 | STARTTLS | 587 |
| FTP | FTPS | 990 |
サーバー構成
Nginx TLS設定
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ベストプラクティス
1. TLS 1.2以上を使用: 古いバージョンを無効化
2. 強力な暗号スイート: AEAD暗号を優先
3. HSTSを有効化: TLS接続を強制
4. 証明書管理: 更新を自動化
5. 前方秘密: ECDHEキー交換を使用
6. 定期的なテスト: SSL Labs、testssl.sh
TLS設定のテスト
# OpenSSLテスト
openssl s_client -connect example.com:443 -tls1_3
# 証明書をチェック
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text
TLSはセキュアなインターネット通信の基礎で、傍受、改ざん、および中間者攻撃に対してデータを保護するために転送中にデータを暗号化します。