是否可以根据API Manager客户端证书存储区中的证书检查通过GET https API调用发送的客户端证书?
在Azure门户中,只能上载带有私钥和密码的客户端证书。 但是,客户绝不会使用密码将证书的私钥部分发送出去。
当我尝试仅使用公共密钥上载客户端证书时,Azure出现错误。
根据Azure Portal API管理文档,应该有可能: https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients
答案 0 :(得分:1)
这两件事是独立的功能。当您要使用该证书来验证APIM向后端发出的调用时,可以将客户端证书(带有私钥的pfx)上载到APIM。
如果您想验证证书客户端发送到APIM,只需检查python3
策略中context.Request.ClientCertificates
的指纹即可非常简单,也可以致电choose
或{如果证书具有完整的链,请在证书上使用{1}}。您可以将自己的CA证书上传到APIM中。
答案 1 :(得分:1)
当前无法仅使用公共密钥上传客户端证书。
您可以使用自定义策略(如您提供的链接中所示)验证用于调用API的客户端证书,例如检查证书指纹(这样就不需要实际上传任何证书)。
例如像这样:
<policies>
<inbound>
<base />
<choose>
<when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
<return-response>
<set-status code="403" reason="Invalid client certificate" />
</return-response>
</when>
</choose>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>