V4.4.14证书吊销配置后,需要重启emqx吊销才生效

环境

  • EMQX 版本:emqx-4.4.14-otp24.3.4.2-1-el7-amd64.zip
  • 操作系统版本:centos 7.6

重现此问题的步骤

1.证书吊销环境准备
1.1 emqx配置证书吊销


1.2 自签名CA提供crl查询服务,标准的GET,以string格式返回crl.pem

1.3 客户端测试访问证书吊销文件
image

1.4 查看吊销证书文件

  1. 现象
    三个客户端吊销了两个,但是三个全部不能正常连接:未吊销客户端证书的连接到来时,emqx日志报错如下:

将listener.ssl.external.enable_crl_check = false后,重启emqx,三个客户端证书都能正常使用

  1. 所以想请教是否这个listener.ssl.external.crl_cache_urls = http://127.0.0.1:8023/v1/configuration/project/7058592899151167488/test1.crl.pem
    自签名CA提供的api接口有问题,应该怎么提供crl.pem文件?

在你开启了 CRL 检查但是没有吊销证书之前,这三个客户端证书能正常连接吗?

解决了,crl_cache_urls应该返回格式 c.Writer.Header().Add(“Content-Disposition”, fmt.Sprintf(“attachment;filename=%s”, “test2.crl.pem”))
而非string 证书

经过调整emqx已经可以吊销证书了,但是每次都得重启emqx,否则被吊销过的证书会一直可以使用(emqx请求CRL以后,做了客户端重连)。
能确认下emqx请求吊销列表以后,将其存储在了什么地方?怎么确定下不重启的时候为啥没有生效,因为从ca服务侧来看,每隔15分钟都刷新了吊销列表文件,并且那个文件是最新的

我这里按照你的要求 c.Writer.Header().Add(“Content-Disposition”, fmt.Sprintf(“attachment;filename=%s”, “test2.crl.pem”)) 返回的,但是还是报错,如下:

2023-02-08T18:12:52.567537+08:00 [error] supervisor: ‘esockd_connection_sup - <0.1964.0>’, errorContext: connection_shutdown, reason: {ssl_error,{tls_alert,{internal_error,“TLS server: In state wait_cert at ssl_handshake.erl:362 generated SERVER ALERT: Fatal - Internal Error\n {unexpected_error,function_clause}”}}}, offender: [{pid,<0.2193.0>},{name,connection},{mfargs,{emqx_connection,start_link,[[{deflate_options,[]},{crl_options,[{crl_check_enabled,true},{crl_cache_urls,[“http://172.30.249.209:57801/service/crl.pem”]}]},{ocsp_options,[{ocsp_stapling_enabled,false},{ocsp_refresh_interval,300000},{ocsp_refresh_http_timeout,15000}]},{max_conn_rate,500},{active_n,100},{zone,external},{proxy_address_header,<<>>},{proxy_port_header,<<>>},{supported_subprotocols,[]}]]}}]