mTLS みゅーちゅあるてぃーえるえす
mTLS相互TLSクライアント証明書ゼロトラストマイクロサービス相互認証
mTLSについて教えて
mTLSとは
mTLS(mutual TLS:相互TLS) とは、TLS(Transport Layer Security)通信において、サーバーとクライアントの双方が証明書を提示して互いに認証する仕組みです。
通常のTLSでは、クライアント(ブラウザなど)はサーバーの証明書を検証しますが、サーバー側はクライアントを認証しません(誰でもアクセスできる状態)。mTLSではサーバーもクライアントに証明書の提示を要求し、証明書を持つ正規のクライアントだけが接続できます。
主な用途:
- マイクロサービス間通信:Service Meshでサービス間のすべての通信をmTLSで保護(Istio、Linkerd等)
- API認証:クライアント証明書でAPIキーよりも強固な認証
- VPN・ゼロトラストネットワーク:デバイス証明書による端末認証
- B2B連携:企業間のシステム連携における相互認証
TLSとmTLSの違い
| 比較項目 | TLS(片方向) | mTLS(相互) |
|---|---|---|
| サーバー認証 | あり | あり |
| クライアント認証 | なし(誰でもアクセス可) | あり(証明書保持者のみ) |
| 接続の対称性 | 非対称 | 対称 |
| 主な用途 | Webサイト・API一般公開 | マイクロサービス・内部API・VPN |
| 管理コスト | 低い | 高い(クライアント証明書の発行・管理が必要) |
歴史と背景
- 1994年:SSLの設計当初から双方向認証の機能は存在していた
- 2000年代:VPNやB2B連携での利用が広がる
- 2017年頃:Service Mesh(Istio等)の登場でマイクロサービス間のmTLSが注目される
- 2020年代:ゼロトラストアーキテクチャの浸透で「すべての通信をmTLSで保護」が推奨される
- 現在:Kubernetes環境でのIstio・Linkerdによる自動mTLS設定が普及
mTLSのハンドシェイクフロー
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 8446 | TLS 1.3(mTLSのハンドシェイクフローを含む) |
| RFC 5246 | TLS 1.2(従来の仕様) |