是否可以针对API Manager客户端证书存储中的证书检查通过GET https API调用发送的客户端证书?
在Azure门户中,只能使用私钥和密码上载客户端证书。但是,客户端永远不会使用其密码发送其证书的私钥部分。
当我尝试仅使用公钥上载客户端证书时,Azure会出错。
根据Azure门户API管理文档,它应该是可能的:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients
这两件事是不同的功能。如果要使用该证书对APIM对后端进行的调用进行身份验证,则可以将客户端证书(带私钥的pfx)上载到APIM。
如果你想验证证书客户端发送到APIM你可以很简单,只需检查context.Request.ClientCertificates
政策中choose
的指纹,或者如果它有完整的链,你可以在证书上调用Verify
或VerifyNoRevocation
。您可以将自己的CA证书上传到APIM以实现此目的。
目前无法仅使用公钥上传客户端证书。
您可以使用自定义策略(如您提供的链接中所示)验证用于调用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>