你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
相互传输层安全性 (mTLS) 是标准 TLS 协议的扩展,可提供客户端和服务器之间的相互身份验证。 Azure 容器应用支持运行启用了 mTLS 的应用程序,以提高应用程序中的安全性。
在 Azure 容器应用中,所有传入请求在路由到目标容器应用之前通过 Envoy 传递。 使用 mTLS 时,客户端会与 Envoy 交换证书。 其中每个证书都放置在 X-Forwarded-Client-Cert 标头中,然后发送到应用程序。
若要在 Azure 容器应用中生成 mTLS 应用程序,需要:
- 将 Azure 容器应用配置为要求来自对等方的客户端证书。
- 从请求中提取
X.509证书。
本文介绍如何通过从客户端提取 X.509 证书来处理对等 mTLS 握手证书。
需要客户端证书
使用以下步骤将容器应用配置以要求客户端证书:
- 在 Azure 门户中打开容器应用。
- 在“设置”下选择“流入量”。
- 选择“启用”选项。
- 对于“流入量”,请选择 HTTP。
- 在“客户端证书模式”下,选择“要求”。
- 选择保存应用所做的更改。
有关在 Azure 容器应用中配置客户端证书身份验证的详细信息,请参阅在 Azure 容器应用中配置客户端证书身份验证。
提取 X.509 证书
若要从 X-Forwarded-Client-Cert 标头中提取 X.509 证书,请分析应用程序代码中的标头值。 启用 mTLS 时,此标头包含客户端证书信息。 证书以分号分隔的列表格式提供,其中包括哈希、证书和链。
下面是要在应用程序中提取和分析证书的过程:
- 从传入请求中检索
X-Forwarded-Client-Cert标头。 - 分析标头值以提取证书详细信息。
- 将分析后的证书放入标准证书属性,以便进一步验证或使用。
分析后,可以验证证书并根据应用程序的需求使用这些证书。
示例
在 Java 应用程序中,可以使用反应式 X.509 身份验证筛选器将用户信息从证书映射到安全上下文。 有关在 Azure 容器应用中使用 mTLS 的 Java 应用程序的完整示例,请参阅 Azure 容器应用中的 mTLS 服务器应用程序。