相互トランスポート層セキュリティ (mTLS) は標準的な TLS プロトコルの拡張機能であり、クライアントとサーバーの間の相互認証を提供します。 Azure Container Apps では、アプリケーションのセキュリティを強化するための mTLS 対応アプリケーションの実行がサポートされています。
Azure Container Apps では、着信したすべての要求は、ターゲット コンテナー アプリにルーティングされる前に Envoy を通過します。 mTLS の使用時は、クライアントは Envoy と証明書を交換します。 これらの各証明書は、X-Forwarded-Client-Cert ヘッダーに配置されてから、アプリケーションに送信されます。
Azure Container Apps で mTLS アプリケーションを構築するには、次のことを行う必要があります。
- ピアからのクライアント証明書を必要とするように Azure Container Apps を構成します。
- 要求から
X.509
証明書を抽出します。
この記事では、クライアントから X.509
証明書を抽出して、ピア mTLS ハンドシェイク証明書を処理する方法について説明します。
クライアント証明書を要求する
次の手順を使って、クライアント証明書を要求するようにコンテナー アプリを構成します。
- Azure portal でコンテナー アプリを開きます。
- [設定] で [イングレス] を選びます。
- [有効] オプションを選択します。
- [イングレス タイプ] で [HTTP] を選びます。
- [クライアント証明書モード] で [必須] を選びます。
- [保存] をクリックして変更を適用します。
Azure Container Apps でのクライアント証明書認証の構成について詳しくは、「Azure Container Apps でクライアント証明書の認証を構成する」をご覧ください。
X.509 証明書を抽出する
X-Forwarded-Client-Cert
ヘッダーから X.509
証明書を抽出するには、アプリケーションのコードでヘッダーの値を解析します。 mTLS が有効になっている場合、このヘッダーにはクライアント証明書の情報が含まれます。 証明書はセミコロンで区切られたリスト形式で提供され、ハッシュ、証明書、チェーンが含まれます。
アプリケーションで証明書を抽出して解析するには、次の手順のようにします。
- 着信した要求から
X-Forwarded-Client-Cert
ヘッダーを取得します。 - ヘッダーの値を解析して、証明書の詳細を抽出します。
- さらに検証または使用するため、解析された証明書を標準の証明書属性に設定します。
解析が済んだら、証明書を検証し、アプリケーションのニーズに応じて使用できます。
例
Java アプリケーションでは、リアクティブ X.509 認証フィルターを使って、証明書からセキュリティ コンテキストにユーザー情報をマップできます。 Azure Container Apps で mTLS を使用する Java アプリケーションの完全な例については、Azure Container Apps での mTLS サーバー アプリケーションに関するページを参照してください。