mutual TLSとは何か? 双方が身元を証明する
mutual TLS(mTLS)は、通常のTLSを拡張し、クライアントとサーバーの双方が証明書を提示して、データが流れる前に互いに身元を証明するようにします。
標準のTLSでは、サーバーだけが身元を証明し、クライアントは転送層では匿名のままです。mutual TLSはクライアントにも証明書を提示させ、強力な双方向認証を提供します。これはservice meshやzero-trustネットワークで一般的であり、CIはそのようなサービスに到達するために正しいクライアント証明書を保持している必要があります。
双方向認証
mTLSではhandshakeで、クライアントがサーバーとともに有効な証明書を提示することを要求します。接続は、双方が相手の証明書を信頼した場合にのみ成功し、両者を認証します。
mTLSが使われる場所
- east-westトラフィックを保護するservice mesh。
- すべての接続を認証するzero-trustネットワーク。
- クライアント証明書を要求する高セキュリティのAPI。
証明書の配布
双方が信頼できる認証局によって発行された証明書を必要とします。クライアント証明書の管理、ローテーション、配布がmTLSの主な運用コストです。
CI/CDにおけるmTLS
mTLSで保護されたサービスを呼び出すpipelineは、通常secretとして注入される有効なクライアント証明書を保持している必要があります。それがなければ、リクエストが送信される前にhandshakeが拒否されます。
なぜ接続が拒否されるのか
欠落、期限切れ、または信頼されていないクライアント証明書は、handshakeを完全に失敗させます。エラーは接続時に現れ、HTTPステータスとしては現れません。リクエストが完了することが一切ないからです。
決定的であり一時的ではない
不正なクライアント証明書によるmTLSの拒否は、証明書が修正されるまで毎回失敗するため、retryは役立ちません。Latchkeyのrunnerは一時的なhandshakeのリセットをretryしますが、真の証明書の失敗を表面化させ、あなたが認証情報を修正できるようにします。
重要なポイント
- mutual TLSは、クライアントとサーバーの双方を証明書で認証します。
- service meshやzero-trustネットワークで一般的です。
- 欠落または期限切れのクライアント証明書は、一時的にではなく決定的に失敗します。