相互 TLS(mTLS)は、クライアントとサーバーの間の相互認証のための業界標準プロトコルです。mTLS プロトコルでは、ネットワーク接続の両端のクライアントとサーバーの両方が、クライアント証明書に関連付けられている秘密鍵を両方が保持していることを確認することで、それぞれの身元が正しいことを確認します。
クライアント証明書とは
クライアント証明書(Transport Layer Security(TLS)証明書とも呼ばれる)は、デバイスの ID の確認に必要な重要な情報が含まれているファイルです。証明書情報には、公開鍵、証明書の発行者のステートメント(証明書は認証局が発行するか、または自己署名できます)、証明書の有効期限が含まれます。
Google API がデバイス ID を検証する仕組み
TLS プロトコルは、公開鍵基盤(PKI)と呼ばれる手法を使用します。これは、公開鍵と秘密鍵の非対称鍵ペアに依存します。秘密鍵で暗号化されたものは、公開鍵でのみ復号できます。Google Cloud APIs は TLS プロトコルを使用して、mTLS handshake 中に証明書の公開鍵を使用して秘密鍵で暗号化されたメッセージを復号することで、デバイスの ID を確認します。復号に成功すると、信頼できるデバイスでのみ利用可能な秘密鍵を所有していることが証明されます。
mTLS ハンドシェイクと検証プロセスを有効にするには、クライアントが次の操作を行う必要があります。
mTLS 固有の API エンドポイントを使用して、Google API との mTLS 接続を確立します。mTLS 固有のエンドポイントの形式は
[service].mtls.googleapis.com
です。mTLS handshake 中にデバイス証明書を検出して使用します。証明書のデプロイに Endpoint Verification を使用している場合、このタイプの証明書は、サポートされているクライアントによって自動的に検出されて使用されます。
次の図は、クライアントと Google API サーバー間の mTLS handshake を示しています。