mTLSとは

クライアントとサーバーがお互いに証明書を提示して認証し合う仕組み。

従来の問題

  1. 内部ネットワークへの侵入: 一度侵入されると横移動が容易
  2. APIキー漏洩: 静的な認証情報の管理が困難
  3. なりすまし攻撃: 悪意のあるクライアントの検出が困難

通常のTLS(一方向認証)

Client → [証明書要求] → Server
Client ← [サーバー証明書] ← Server
Client → [暗号化通信開始] → Server

mTLS(mutual TLS、相互TLS認証)

通常のTLSでは、サーバーに対する認証のためサーバー証明書を使用する。

mTLSではクライアント、サーバー相互の認証が必要となるため、サーバー証明書に加えてクライアント証明書が必要

流れ:

  1. クライアントがサーバーに接続
  2. サーバーが証明書を提示(通常のTLSと同じ)
  3. クライアントも証明書を提示(mTLS特有)
  4. 双方が相手の身元を確認
  5. 暗号化通信開始
Client ↔ [相互証明書交換] ↔ Server
Client ↔ [双方向認証] ↔ Server  
Client ↔ [暗号化通信] ↔ Server

参考: 相互TLS認証(mTLS)とは?