我正在尝试使用
context.Request.Certificate.Verify()
方法验证 Azure API 管理中的客户端证书。
我已尝试以下步骤:
context.Request.Certificate.Verify()
验证客户端证书的方法。现在,当我尝试使用客户端证书调用 APIM api 时,上述方法(步骤 4)始终为 False,已从 apim 跟踪验证。不确定我在什么地方做错了事情。任何帮助/指导或任何文章都非常有帮助。
我遇到了类似的问题,调查总结/原因如下:
解决问题的 2 个选项
注意: 如果certificate.verify是您的安全团队的强制命令,那么您必须从受信任的CA购买证书 o 您需要VerifyNoReplication,因为apim无法检索吊销列表信息,并且VerifyNoReplication仍将执行验证证书路径
这是我希望在此处添加的一些附加信息,因为没有其他链接可以解决此问题。
先决条件:您的 Root 和 Intermediate 应将 CA 属性设置为 true,keyUsage 应具有 digitalSignature、keyCertSign、cRLSign。在将证书上传到 APIM 之前,您应该验证您的证书路径是否正确。 (我在没有所需权限的情况下设置了中级证书,因此即使在适当的位置安装证书后,证书路径也无效)
确认这些后,请将您的根证书和中间证书添加到 APIM。
如果您有自签名证书,则Verify()将无法按照上述答案中提到的方式工作,因为它将尝试在公共互联网上不存在的URL上搜索已撤销的证书。 我们需要使用VerifyNoReplication()方法来代替。
我遇到的另一个问题是我的 APIM 仅启用了 TLS 1.2,因此邮递员无法工作(ERR_CONNRESET),在添加 Tls1.3 以忽略设置中的部分(api 范围/集合范围)后,它开始工作。
我发现一些有用的参考资料: