emqx4.4.12配置crl_cache_urls后,emqx运行过程中报错

可否提供日志?

是否是缺失了 X509v3 CRL Distribution Points?
github 有类似issue:

我已经按照要求添加了 X509v3 CRL Distribution Points 之后,根本就连接不上了。
下面是日志
emqx.log.3.zip (66.9 KB)

看着是EMQX在等cert的时候收到了alert record,client是什么库实现的?

是否能提供tcpdump trace?

如何提供?请详细说明

这个问题搞了很久了,都没有处理完成。。我这边可以开远程,如果方便的话,能否远程帮我看一下?

emqx8883.zip (53.5 KB)
dump已抓包,请查收

谢谢,但是提供的tcpdump 包我无法解密来查看具体消息。 因为tcpdump包没有注入SSL session key.

根据之前的log,EMQX 在与客户端握手完成时收到:

{ssl_tls, 21, {3,3},<<2,51>>}

带上注释后是

{ssl_tls, 21, %% ALERT
{3,3}, %% TLS version
<<2, %% fatal
51   %% decrypt_error
>>}

这个是client 主动发TLS alert 断开TLS 连接。请在 client 端排错。

参考:
https://www.rfc-editor.org/rfc/rfc8446#appendix-B.2

client 用的是你们的MQTTX,怎么排错?

我把listener.ssl.external.enable_crl_check 改为true,就报错了
设置为flase 就没有问题。。。
你那边能不能把问题定位的更准确些?

我这边在本地局域网测试服务器,没有问题了。但是部署到阿里云上出现了以下问题:
2023-03-24T16:54:51.497670+08:00 [debug] direction: outbound, domain: [otp,ssl,record], file: ssl_logger.erl, line: 70, message: [<<23,3,3,0,19>>,<<108,208,217,159,247,208,199,45,20,145,71,96,131,234,188,112,150,252,134>>], mfa: {ssl_logger,debug,4}, pid: <0.2202.0>, protocol: record
2023-03-24T16:54:51.497871+08:00 [notice] TLS server: In state wait_cert at ssl_handshake.erl:2100 generated SERVER ALERT: Fatal - Bad Certificate, - {bad_crls,no_relevant_crls}
2023-03-24T16:54:51.498175+08:00 [error] supervisor: ‘esockd_connection_sup - <0.1964.0>’, errorContext: connection_shutdown, reason: {ssl_error,{tls_alert,{bad_certificate,“TLS server: In state wait_cert at ssl_handshake.erl:2100 generated SERVER ALERT: Fatal - Bad Certificate\n {bad_crls,no_relevant_crls}”}}}, offender: [{pid,<0.2199.0>},{name,connection},{mfargs,{emqx_connection,start_link,[[{deflate_options,[]},{crl_options,[{crl_check_enabled,true},{crl_cache_urls,[“http://xxx:nnn/service/ivics-certificate-admin/certificate/downloadCrlFile”]}]},{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,[]}]]}}]

根据你提供的信息, server 端无法用拿到的 CRL 来确认client 证书是否被吊销。
CRL 里crlExtensions 设了哪些值?revokedCertificates里的crlEntryExtensions 都有哪些?