採用に向く条件
選ぶ理由
- 双方向で強力な認証
- ネットワーク層で透過的に効く
- サービスメッシュ/ゼロトラストに好適
製品プロフィール
証明書ベース
サーバだけでなくクライアントも証明書で身元を示す相互認証。改ざん・なりすましに強く、ゼロトラストやサービス間通信で使われる。詳しくは TLS も参照。
基本情報
選定ガイド
採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。
採用に向く条件
事前に確認する条件
詳しい解説
mTLS(相互 TLS)は、通信する双方が証明書を提示し合って互いに認証する仕組みです。通常の TLS(HTTPS)ではサーバーだけが証明書を出しますが、mTLS ではクライアントも証明書を提示します。
これにより「サーバーが本物か」だけでなく「クライアントが本物か」も確かめられ、双方向で相手を信頼できる強固な接続になります。
横にスクロール
TLS のハンドシェイクの中で、サーバー証明書の検証に加えてクライアント証明書の検証が行われます。
CertificateRequest でクライアントにも証明書を要求する双方の証明書が正当だと確認できて初めて、暗号化された通信が確立します。秘密鍵は端末外に出ないため、証明書の提示は「鍵の所有」の証明になり、パスワードのような共有秘密より盗まれにくいのが本質的な強みです。
トークンやパスワードによる認証が「アプリケーション層で誰かを確かめる」のに対し、mTLS は接続そのものの層(トランスポート層)で相手を認証します。
| 観点 | mTLS | API キー / JWT |
|---|---|---|
| 認証の層 | 接続確立時(トランスポート) | リクエスト(アプリ層) |
| 資格情報 | 証明書+秘密鍵(端末外に出ない) | 共有文字列/トークン |
| なりすまし耐性 | 高い(鍵の所有が必要) | 漏洩で悪用されうる |
| 主対象 | サービス間(機械) | アプリ・ユーザー |
| 運用負荷 | 重い(証明書ライフサイクル) | 軽い |
人のログインよりも、機械間(サービス間)の通信を強く保護したい場面に向いています。
サービス間通信や、境界を信用せず常に検証するゼロトラスト環境で採用されます。サービスメッシュ(Istio 等)は、サイドカー間の通信を mTLS で自動的に暗号化・相互認証する代表例です。
mTLS の運用負荷は重く、証明書の発行・配布・更新・失効を継続的に回す必要があります。手作業では有効期限切れによる障害を招きがちなため、多数のサービスに展開する場合は、短命証明書を自動発行・自動ローテーションする PKI 基盤(SPIFFE/SPIRE、cert-manager、サービスメッシュ)の整備が前提になります。失効の反映(CRL/OCSP)や、CA の秘密鍵保護も重要です。
総じて mTLS は、証明書と秘密鍵に基づいて接続時点で双方を強く認証する方式で、ゼロトラストやサービス間通信の保護に有効な一方、証明書ライフサイクルの自動化が実運用の鍵となります。
実装・運用の視点
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
サービス間(マイクロサービス)通信
種別: 証明書ベース / 目的: 相互認証 / トークン/形式: クライアント証明書
ネットワーク層で透過的に効く
証明書の発行・更新・失効の運用が重い
向いている用途