证书吊销列表 (Certificate Revocation List ,简称: CRL) 是 PKI 系统中的一个结构化数据文件,该文件包含了证书颁发机构 (CA) 已经吊销的证书的序列号及其吊销日期。
证书吊销列表分发点 (CRL Distribution Point ,简称 CDP) 是含在数字证书中的一个可以共各种应用软件自动下载的最新的 CRL 的位置信息。
证书吊销列表起什么作用?
浏览器在使用 https:// 访问已经部署了 SSL 证书的网站时,一定会先检查此 SSL 证书是否已经被吊销,也就是说会查询吊销列表或 OCSP 服务, 如果此证书已经被证书颁发机构吊销,则会显示警告信息: “此组织的证书已被吊销。安全证书问题可能显示试图欺骗您或截获您向服务器发送的数据。建议关闭此网页,并且不要继续浏览该网站。 ”
问题描述
APIM如何配置证书的CRL检测策略?
问题解决
可以使用 context.Request.Certificate.Verify() 这个策略进行验证。
如果证书中含有CRL信息,那么在APIM这边在配置证书验证策略 context.Request.Certificate.Verify(),配置这个策略,验证的时候,如果弹出的证书符合配置的规则,就返回200,否则就返回403
<choose> <when condition="@(context.Request.Certificate == null || !context.Request.Certificate.Verify() || context.Request.Certificate.Issuer != "trusted-issuer" || context.Request.Certificate.SubjectName.Name != "expected-subject-name")" > <return-response> <set-status code="403" reason="Invalid client certificate" /> </return-response> </when> </choose>
特别注意:APIM中如果要验证客户端证书,必须在设置“自定义域名”时,启用 “ Negotiate client certificate ”,避免 "No client certificate received." 的错误。这是因为只有当 negotiateClientCertificate 这个属性设置为true的时候才会请求证书,默认情况下是false。
参考文档
证书吊销列表(CRL)介绍:https://www.cnblogs.com/274914765qq/p/4455951.html
在APIM中使用客户端证书验证API的请求,但是一直提示错误"No client certificate received.":https://www.cnblogs.com/lulight/p/15083054.html
使用 Azure API 管理中的客户端证书身份验证确保后端服务安全:https://docs.microsoft.com/zh-cn/azure/api-management/api-management-howto-mutual-certificates-for-clients#certificate-validation-with-context-variables