问题背景 :
我需要在 EMQX 中启用证书 CRL 吊销检查,具体配置如下:
- 已通过 Nginx 部署本地 CRL 文件(
crl.pem),并对外提供 HTTP 下载(地址:http://localhost:80/crl.pem),Nginx 日志可观察到该 CRL 每 15 分钟被访问一次,EMQX日志也有请求记录
- 客户端证书和服务器证书均包含
CRL Distribution Points(CDP)扩展,且 CDP 地址正确指向上述 Nginx 的 CRL 下载 URL。 - 本地通过 Nginx 的
ssl_crl配置验证 CRL 吊销功能正常(可正确拒绝吊销证书),说明 CRL 文件本身(格式、签名、有效期等)无明显问题,证书都为自签名证书
核心问题 :
关闭 CRL 检查,所有证书可正常连接,排除证书本身(如证书链、有效期)的基础问题。启用 EMQX 的 CRL 检查后,所有客户端证书(包括未被吊销的正常证书)均无法建立连接 ,既然EMQX获取到CRL文件,可因为某些原因校验失败。
已排查内容: - 验证 CRL 文件有效性:通过
openssl确认 CRL 未过期、签名正确(verify OK)、未误吊销正常证书(CRL 中无正常证书序列号)。通过Nginx的吊销配置测试通过 - 确认 CDP 扩展正确:客户端证书的 CDP 地址与 Nginx 提供的 CRL URL 一致,手动下载 CRL 文件与本地源文件一致。
- 检查 EMQX 日志:未发现明确的
CRL signature verification failed、CRL expired等错误。