5.0 SSL 连接失败:读取 key 文件报 asn1,{{wrong_tag, 错误

环境信息

  • EMQX 版本:开源版5.0.4
  • 操作系统及版本:centos7
  • 其他

问题描述

配置的tls双向验证,连接不上
相同的证书,配置在nginx中,开启nginx的tls双向验证,请求能正常转发,说明证书没有问题
证书配置到emqx上,就连接不上

配置文件及日志

报错日志:
supervisor: ‘esockd_connection_sup - <0.2134.0>’, errorContext: connection_shutdown, reason: {ssl_error,{options,{keyfile,“etc/pki_certs/pki_test_server.key”,{error,{asn1,{{wrong_tag,{{expected,2},{got,16,{16,[{6,<<42,134,72,134,247,13,1,1,1>>},{5,<<>>}]}}}},[{‘OTP-PUB-KEY’,match_tags,2,[{file,“OTP-PUB-KEY.erl”},{line,23999}]},{‘OTP-PUB-KEY’,decode_integer,2,[{file,“OTP-PUB-KEY.erl”},{line,23516}]},{‘OTP-PUB-KEY’,dec_RSAPrivateKey,2,[{file,“OTP-PUB-KEY.erl”},{line,2865}]},{‘OTP-PUB-KEY’,decode,2,[{file,“OTP-PUB-KEY.erl”},{line,1232}]},{public_key,der_decode,2,[{file,“public_key.erl”},{line,356}]},{ssl_config,init_private_key,5,[{file,“ssl_config.erl”},{line,186}]},{ssl_config,init,2,[{file,“ssl_config.erl”},{line,55}]},{ssl_gen_statem,ssl_config,3,[{file,“ssl_gen_statem.erl”},{line,162}]},{tls_connection,init,1,[{file,“tls_connection.erl”},{line,145}]},{proc_lib,init_p_do_apply,3,[{file,“proc_lib.erl”},{line,226}]}]}}}}}}, offender: [{pid,<0.2612.0>},{name,connection},{mfargs,{emqx_connection,start_link,[#{enable_authn => true,limiter => #{connection => default},listener => {ssl,default},zone => default}]}}]


image

证书可能有问题,我们以前也遇到过类似情况,是颁发证书的服务商没有按照标准做法。可以问下你的证书是从什么地方获取的吗?

证书是我们自己生成的,证书配置到nginx上,开启nginx的双向验证是没有问题的,是不是说明证书没有问题?证书是通过java代码生成的

主要和证书的判定等级有关,可能是ngix比较宽松。目前看到的日志是报key错误。

你可以看下是不是key没有替换造成的

key有没有替换,是指key有没有替换为我们自己的么?key文件肯定是替换了我们自己的了

如果你的key文件没有问题,并且证书是使用【java生成】的,那么我们遇到过一样的情况,确实为证书不标准。推荐找服务商购买,或者标准机构颁发证书。

我们是把域名写到common name字段了,没有使用alt_names字段,这个会影响么

这个不会有影响的,如果方便的话,可以用同样的方式生成一对证书(cert+key)方便我们复现么?
另外,需要给出下你这边是如何配置 TLS 的方式/配置


这是我们的配置,我们时开启的双向认证,我们使用自签名证书

怎么私聊?我可以把我们用来测试的证书发给你们,麻烦您复现一下,帮忙看下

感谢 可以发我邮箱 hejb@emqx.io

我们这边复现试试看