暗号化・証明書

mTLS みゅーちゅあるてぃーえるえす

mTLS相互TLSクライアント証明書ゼロトラストマイクロサービス相互認証
mTLSについて教えて

簡単に言うとこんな感じ!

通常のTLSはサーバーだけが証明書で身元を証明するけど、mTLSはクライアントもサーバーも互いに証明書で「お互いに本物かどうか」確認する相互認証の仕組みだよ。マイクロサービス間の通信保護によく使われるんだ!


mTLSとは

mTLS(mutual TLS:相互TLS) とは、TLS(Transport Layer Security)通信において、サーバーとクライアントの双方が証明書を提示して互いに認証する仕組みです。

通常のTLSでは、クライアント(ブラウザなど)はサーバーの証明書を検証しますが、サーバー側はクライアントを認証しません(誰でもアクセスできる状態)。mTLSではサーバーもクライアントに証明書の提示を要求し、証明書を持つ正規のクライアントだけが接続できます。

主な用途:


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のハンドシェイクフロー

クライアント サーバー ① ClientHello ② ServerHello + サーバー証明書提示 ③ CertificateRequest(クライアント証明書を要求) ④ クライアント証明書提示 ⑤ CertificateVerify(秘密鍵で署名) ⑥ 相互認証成功 → 暗号化通信開始 (AES等で保護された双方向通信)

関連する規格・RFC

規格・RFC番号内容
RFC 8446TLS 1.3(mTLSのハンドシェイクフローを含む)
RFC 5246TLS 1.2(従来の仕様)

関連用語