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

时间:2020-08-20 19:27:08

标签: azure azure-api-management

我正在尝试使用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跟踪进行验证)。不知道我在做什么和在哪里做错事。任何帮助/指导或任何文章都非常有帮助。

2 个答案:

答案 0 :(得分:0)

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

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

您可以利用此guide来设置CA。

答案 1 :(得分:0)

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

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

2个解决问题的选项

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

注意: 如果certificate.verify是安全团队的强制性命令,那么您将必须从受信任的CA购买证书 o您需要VerifyNoRevocation,因为apim无法检索撤消列表信息,VerifyNoRevocation仍然也会执行验证证书路径的操作