【问题标题】:Type of Client-Cert to upload to Azure APIM?要上传到 Azure APIM 的客户端证书类型?
【发布时间】:2021-06-21 18:01:22
【问题描述】:

我有一个 HTTP 触发的 Azure 函数,前面带有 Azure API 管理 (APIM)。

  • Client-certificates 在 Azure Function 级别设置为 Require

  • APIM 级别:

我需要将客户端证书(public 客户端证书)添加到某种“信任库”中。看来 APIM 的“客户端证书”页面相当于信任库。

问题是:APIM 在这里寻找什么类型的客户端证书?

  • 应该只是客户的public证书,对吧?
  • 我不应该将这些存储在 Azure Key Vault 中,因为它们不包含私钥
  • 我只需要检查请求中的客户端证书是否来自“受信任的来源”,以防止请求到达我的应用程序代码(如果它们是未知客户端)。

【问题讨论】:

  • 你有什么进展吗?如果您觉得我的回答对您有帮助,请将其标记为答案,以便对其他人有所帮助。

标签: azure azure-functions azure-api-management client-certificates


【解决方案1】:

我认为this doc 对在 azure apim 中启用客户端证书身份验证有生动的解释。在这里总结一下,您不必上传证书文件,因为您可以在策略中设置Thumbprint,其值类似于

<when condition="@(context.Request.Certificate == null 
       || context.Request.Certificate.Thumbprint != "456AAB1833DF842152605DF6C2B1DB2BBA29380D"
       || context.Request.Certificate.NotAfter<DateTime.Now)">

如果你上传证书,你可以像这样设置策略:

<when condition="@(context.Request.Certificate == null 
       || !context.Deployment.Certificates.Any(c => c.Value.Thumbprint == context.Request.Certificate.Thumbprint)
       || context.Request.Certificate.NotAfter<DateTime.Now)">

这是 apim 客户端证书上的相关 official docs

【讨论】:

  • 这并不能完全回答我的问题:“APIM 在这里寻找什么类型的证书?”和“应该只是客户的公共证书,对吧?”。阅读docs 似乎APIM 希望我获取客户的私人证书以及访问它们的密码。这对我来说毫无意义。我只想比较客户端 PUBLIC 证书上的证书属性并发出 OCSP 请求以查看证书是否在将请求转发到我的应用代码之前被吊销。
  • 我没有更多的想法,抱歉:(
  • 您的问题得到答案了吗?APIM 在这里寻找什么类型的证书?我也在寻找这个信息。似乎它需要私人证书。但是,如果我们想对发送公共证书的客户端进行身份验证怎么办。一种选择是仅比较指纹。但如果我想引用 APIM 商店,那将需要私有证书。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 2018-02-02
相关资源
最近更新 更多