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连接登录失败
请各位大佬指点一下错误原因
t1ger
2
你应该是需要把MQTTX里面的SSL Secure选项关掉,这个开启的话会检查服务端证书和你的连接地址是否匹配。我看你用的是默认的示例证书,所以会无法通过检查。
你可以先看下这篇博客:EMQX SSL/TLS 使用配置指南 | EMQ
应该可以帮助到你。
我试用的是这片技术博客的配置,就是要启动双向验证,因此SSL Secure不能关闭
我用的不是默认的示例证书,我是把默认的示例,改成了我自己的证书
t1ger
4
那大概率就是因为 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
使用这个命令
以上,每一步都是对应的,我在配置过程中经过了多次检查,您看看其他地方是否会存在问题
t1ger
6
你需要在客户端这边添加一个 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以前的写法。