你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 容器应用中使用 mTLS

相互传输层安全性 (mTLS) 是标准 TLS 协议的扩展,可提供客户端和服务器之间的相互身份验证。 Azure 容器应用支持运行启用了 mTLS 的应用程序,以提高应用程序中的安全性。

在 Azure 容器应用中,所有传入请求在路由到目标容器应用之前通过 Envoy 传递。 使用 mTLS 时,客户端会与 Envoy 交换证书。 其中每个证书都放置在 X-Forwarded-Client-Cert 标头中,然后发送到应用程序。

若要在 Azure 容器应用中生成 mTLS 应用程序,需要:

  1. 将 Azure 容器应用配置为要求来自对等方的客户端证书。
  2. 从请求中提取 X.509 证书。

本文介绍如何通过从客户端提取 X.509 证书来处理对等 mTLS 握手证书。

需要客户端证书

使用以下步骤将容器应用配置以要求客户端证书:

  1. 在 Azure 门户中打开容器应用。
  2. 在“设置”下选择“流入量”。
  3. 选择“启用”选项。
  4. 对于“流入量”,请选择 HTTP
  5. 在“客户端证书模式”下,选择“要求”
  6. 选择保存应用所做的更改。

有关在 Azure 容器应用中配置客户端证书身份验证的详细信息,请参阅在 Azure 容器应用中配置客户端证书身份验证

提取 X.509 证书

若要从 X-Forwarded-Client-Cert 标头中提取 X.509 证书,请分析应用程序代码中的标头值。 启用 mTLS 时,此标头包含客户端证书信息。 证书以分号分隔的列表格式提供,其中包括哈希、证书和链。

下面是要在应用程序中提取和分析证书的过程:

  1. 从传入请求中检索 X-Forwarded-Client-Cert 标头。
  2. 分析标头值以提取证书详细信息。
  3. 将分析后的证书放入标准证书属性,以便进一步验证或使用。

分析后,可以验证证书并根据应用程序的需求使用这些证书。

示例

在 Java 应用程序中,可以使用反应式 X.509 身份验证筛选器将用户信息从证书映射到安全上下文。 有关在 Azure 容器应用中使用 mTLS 的 Java 应用程序的完整示例,请参阅 Azure 容器应用中的 mTLS 服务器应用程序