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

错误报告

2023-02-08T16:51:01.572328+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.2192.0>},{name,connection},{mfargs,{emqx_connection,start_link,[[{deflate_options,[]},{crl_options,[{crl_check_enabled,true},{crl_cache_urls,[“http://xxx:57801/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,[]}]]}}]

环境

  • EMQX 版本:4.4.12
  • 操作系统版本:centos7.6

重现此问题的步骤

  1. xxx
  2. xxx
  3. xxx

预期行为

实际行为


功能请求

描述你需要的功能

为什么你需要这个功能


其他

你是不是使用了 TLS 1.3?设备数量不多的话可以开启 Debug 日志看看。

TLS 的版本,你可以看一下客户端的连接参数,或者通过抓包来看。

看了一下 我这边采用的是TLS1.2

方便的话启用下 Debug 日志,然后再连接下看看,可以看下这篇 日志与追踪 文档。

然后建议换成 MQTT X 试试,我记得 mqtt.fx 在 SSL 这块有些 Bug,不确定它修复了没有。

用mqtt x试过了 一样的问题。Debug日志我也开启了

看下 Debug 日志?

emqx.log.1.zip (3.3 KB)
请查收

我转交给我们相关的技术同事看下,不过可能需要稍晚些才能回复你。

好的

你好,麻烦开启一下 ssl 的 debug 日志看看,需要修改配置:

listener.ssl.external.log_level = debug

修改完成后重启 EMQX,再尝试连接一下,然后我们来看下 debug 日志。

另外你是测试环境还是生产环境?方便调试吗?

emqx.log.1.zip (15.6 KB)

已经配置了,请再看看

你好,
如果是测试环境的话是否可以运行以下命令

  1. 底层调试命令
    emqx eval 'dbg:tracer(), dbg:p(all,c),dbg:tpl(ssl_handshake,path_validate,cx),dbg:tpl(ssl_certificate,trusted_cert_and_paths,cx).'

  2. 尝试TLS 连接

  3. 检查log 注意是erlang.log.*文件
    你应该能看到如下内容:

===== Mon Feb 13 11:28:37 CET 2023
(<0.3453.0>) call ssl_handshake:certify({certificate,[<<48,130,1,152,48,130,1,62,160,3,2,1,2,2,20,65,229,184,198,135,
28,21,25,119,246,49,198,155,47,207,221,34,17,217,119,48,10,6,8,
42,134,72,206,61,4,3,2,48,51,49,11,48,9,6,3,85,4,6,19,2,83,69,
49,36,48,34,6,3,85,4,10,12,27,73,110,116,101,114,110,101,116,
32,87,105,100,103,105,116,115,32,80,116,121,32,76,116,100,32,
67,65,48,30,23,13,50,51,48,49,50,52,50,48,50,57,48,56,90,23,13,
50,52,48,54,48,55,50,48,50,57,48,56,90,48,65,49,11,48,9,6,3,85,
4,6,19,2,83,69,49,33,48,31,6,3,85,4,10,12,24,73,110,116,101,
114,110,101,116,32,87,105,100,103,105,116,115,32,80,116,121,32,
76,116,100,49,15,48,13,6,3,85,4,3,12,6,99,108,105,101,110,116,
48,89,48,19,6,7,42,134,72,206,61,2,1,6,8,42,134,72,206,61,3,1,
7,3,66,0,4,175,183,35,224,52,73,39,49,161,63,250,185,118,20,
133,131,198,207,206,135,60,239,181,11,106,43,109,100,113,76,
126,83,204,26,163,7,55,197,196,73,105,211,41,117,131,59,121,
252,44,202,216,131,85,83,68,124,229,186,86,56,153,174,220,159,
163,34,48,32,48,11,6,3,85,29,15,4,4,3,2,3,136,48,17,6,3,85,29,
17,4,10,48,8,130,6,99,108,105,101,110,116,48,10,6,8,42,134,72,

  1. 上传日志 erlang.log* 给我们

  2. 关闭调试

emqx eval 'dbg:stop_clear().'

注意请勿在生产环境使用命令会造成TLS 信息泄漏。

run_erl.zip (289 字节)

已上传 请看一下

我们需要的是 erlang.log.*

erlang.log.1.zip (995.7 KB)
请查收

谢谢,

错误是unknown_ca, 证书是否为自签名证书?
还有一些证书过期的错误

证书的server_name_indication 为空导致的