Azure APIM - 如何使用 context.Request.Certificate.Verify() 验证客户端证书

问题描述 投票:0回答:3

我正在尝试使用

context.Request.Certificate.Verify()
方法验证 Azure API 管理中的客户端证书。 我已尝试以下步骤:

  1. 我已经创建了自签名根 CA 证书,然后创建了一个 客户端证书和密钥文件。
  2. 现在从邮递员那里,我尝试调用附加客户端证书的方法。我已验证证书已通过跟踪发送到 APIM。
  3. 已在 APIM -> CA 证书中上传根 CA 证书。上传时我 转换为“.cer”文件,因为它不接受“.crt”文件并将存储设置为“受信任的根”。
  4. 在APIM策略中,已使用通过
    context.Request.Certificate.Verify()
    验证客户端证书的方法。

现在,当我尝试使用客户端证书调用 APIM api 时,上述方法(步骤 4)始终为 False,已从 apim 跟踪验证。不确定我在什么地方做错了事情。任何帮助/指导或任何文章都非常有帮助。

azure azure-api-management
3个回答
1
投票

我遇到了类似的问题,调查总结/原因如下:

  • 后来客户在将 PFX 证书作为客户端证书从 Postman 发送到 APIM 时再次遇到问题。
  • 自签名证书 CRL 分发列表(证书吊销列表中的 URL)和访问信息无法公开访问(APIM 是公共托管的,而不是内部的),因此,certificate.verify 失败

解决问题的 2 个选项

  • 从公共信任的 CA 购买证书
  • 使用 context.Request.Certificate.VerifyNoReplication 而不是 context.Request.Certificate.Verify,以便 APIM 在certificate.verify期间不会检查吊销列表

注意: 如果certificate.verify是您的安全团队的强制命令,那么您必须从受信任的CA购买证书 o 您需要VerifyNoReplication,因为apim无法检索吊销列表信息,并且VerifyNoReplication仍将执行验证证书路径


0
投票

对于 Azure API 管理中的客户端证书验证,通常需要执行以下步骤。

  1. 生成根 CA、中间 CA 以及客户端证书。
  2. 上传验证用户发送的客户端证书的中间证书。

您可以使用此指南来设置 CA。


0
投票

这是我希望在此处添加的一些附加信息,因为没有其他链接可以解决此问题。

先决条件:您的 Root 和 Intermediate 应将 CA 属性设置为 true,keyUsage 应具有 digitalSignature、keyCertSign、cRLSign。在将证书上传到 APIM 之前,您应该验证您的证书路径是否正确。 (我在没有所需权限的情况下设置了中级证书,因此即使在适当的位置安装证书后,证书路径也无效)

确认这些后,请将您的根证书和中间证书添加到 APIM。

如果您有自签名证书,则Verify()将无法按照上述答案中提到的方式工作,因为它将尝试在公共互联网上不存在的URL上搜索已撤销的证书。 我们需要使用VerifyNoReplication()方法来代替。

我遇到的另一个问题是我的 APIM 仅启用了 TLS 1.2,因此邮递员无法工作(ERR_CONNRESET),在添加 Tls1.3 以忽略设置中的部分(api 范围/集合范围)后,它开始工作。

我发现一些有用的参考资料:

  1. https://ronaldbosma.github.io/blog/2024/02/02/validate-client-certificates-in-api-management/

  2. https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients

  3. https://learn.microsoft.com/en-us/azure/api-management/api-management-howto-ca-certificates

  4. https://medium.com/@jkewley/testing-client-certificate-authentication-to-azure-api-management-with-postman-e1cfae52fc35

© www.soinside.com 2019 - 2024. All rights reserved.