EMQX启动双向SSL,按照配置失败了

1、openssl genrsa -out ca.key 2048
2、openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem
3、openssl genrsa -out emqx.key 2048

[req]
default_bits  = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = cn
stateOrProvinceName = hb
localityName = wh
organizationName = zjtc
commonName = emqx
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 122.112.174.167

4、openssl req -new -key ./emqx.key -config openssl.cnf -out emqx.csr
5、openssl x509 -req -in ./emqx.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out emqx.pem -days 3650 -sha256 -extensions v3_req -extfile openssl.cnf


6、openssl genrsa -out client.key 2048
7、openssl req -new -key client.key -out client.csr -subj “/C=cn/ST=hb/L=wh/O=zjtc/CN=emqx”
8、openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out client.pem

以上是生成证书的所有步骤
证书生成完成后以后,进行了以下操作:

最后使用mqttx按照技术文档进行配置


验证mqtts连接登录失败

请各位大佬指点一下错误原因

你应该是需要把MQTTX里面的SSL Secure选项关掉,这个开启的话会检查服务端证书和你的连接地址是否匹配。我看你用的是默认的示例证书,所以会无法通过检查。

你可以先看下这篇博客:EMQX SSL/TLS 使用配置指南 | EMQ

应该可以帮助到你。

我试用的是这片技术博客的配置,就是要启动双向验证,因此SSL Secure不能关闭
我用的不是默认的示例证书,我是把默认的示例,改成了我自己的证书

那大概率就是因为 SNI 检查的原因,你可以检查下你使用的服务端证书的SAN字段或者CN字段与当前客户端使用的连接地址是否匹配

[req]
default_bits  = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
countryName = cn
stateOrProvinceName = hb
localityName = wh
organizationName = zjtc
commonName = emqx
[req_ext]
subjectAltName = @alt_names
[v3_req]
subjectAltName = @alt_names
[alt_names]
IP.1 = 122.112.174.167

这个是openssl.cnf文件

openssl x509 -req -in ./emqx.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out emqx.pem -days 3650 -sha256 -extensions v3_req -extfile openssl.cnf
用这个命令,用的openssl.cnf生成的,这一步是服务器的证书

openssl req -new -key client.key -out client.csr -subj “/C=cn/ST=hb/L=wh/O=zjtc/CN=emqx”
这是我生成客户端的,跟服务器的openssl.cnf是对应的


这是我ca根证书填写的时候的截图
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.pem
使用这个命令

以上,每一步都是对应的,我在配置过程中经过了多次检查,您看看其他地方是否会存在问题

你需要在客户端这边添加一个 emqx 到 122.112.174.167 的DNS记录,然后连接时的hostname用emqx

目前我部署emqx的服务器,没有绑定域名,因此我只用了ip没用dns


这是技术文档中描述的,可以不用dns,ip和dns只要保留一个就行

或者说我怎么在客户端添加一个emqx到122.112.174.167 的DNS记录,是在openssl.cnf中配置码

该问题已经解决了,服务器端口8883没有打开。
我上面的配置配置没有问题,新同学在配置的时候,要注意我文档列出的cmd命令要一一对应问题之外,还要记得打开自己服务器的8883端口哦。我参考的那篇文章没有问题,只有第8步这里要用我下面截图这个配置,因为文章里面的配置是5.0以前的写法。