mosquitto的openssl的配置

   用Openssl生成私钥或者其他证书认证时,经常弹出can't open openssl.cnf之类的错误,首先在openssl的安装目录里查看是否有.cnf文件,如果没有需要重新安装,一般openssl有完整版和轻量级版两种,完整版有openssl.cnf文件,安装完整版完毕后在系统环境变量里新建一个OPENSSL_CONF,值为openssl.cnf的完整路径和名称,比如C:\Program Files\OpenSSL-Win64\bin\cnf\openssl.cnf。点击确定后,必须重新启动才有效。

   用openssl生成csr文件时,Common Name一定要输入本地IP地址或主机名称。配置mosquitto.conf时,先停止mosquitto服务,在mosquitto.conf文件末尾添加:

# MQTT over TLS
listener 8883
cafile C:\Program Files\mosquitto\certificates\ca.crt
certfile C:\Program Files\mosquitto\certificates\server.crt
keyfile C:\Program Files\mosquitto\certificates\server.key

#表示注释,路径以mosquitto的实际安装路径为准,certificates子文件夹是手动在mosquitto文件夹里新建的,3个文件是先用openssl文件生成然后拷进来的。

以上文件的生成步骤如下:

1.生成根私钥,最重要的,一定要保密,因为只要有这个文件就可以生成证书

openssl genrsa -out ca.key 2048

2.生成自签名证书

openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

3.新建一个私钥

openssl genrsa -out server.key 2048

4.新建一个由私钥创建公钥的请求

openssl req -new -key server.key -out server.csr

5.生成公钥文件

openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650

以上步骤都是先建一个目录,然后命令行cd进入目录后,再命令行输入以上命令。

然后订阅和发布输入相应的命令行即可:如订阅命令行如下:

mosquitto_sub -h 192.168.43.78 -V mqttv311 -p 8883 --cafile C:\Progra~1\mosquitto\certificates\ca.crt -t sensors/octocopter01/altitude -d

以上是无需客户端提供证书的情况。

如果需要客户端提供证书,那么需要在mosquitto.conf结尾处再添加以下一行,然后重启服务:

require_certificate true

然后生成客户端的密钥和证书:

1.openssl genrsa -out client1.key 2048

2.openssl req -new -key client1.key -out client1.csr

3.openssl x509 -req -in client1.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client1.crt -days 3650

然后输入订阅命令:

mosquitto_sub -h 192.168.1.1 -V mqttv311 -p 8883 --cafile ca.crt --cert client1.crt --key client1.key

需要注意的是:

1.以上文件需要的是完整完整路径,windows命令行识别不了空格,所以Program Files改成Progra~1。

2.上面的Common Name如果是IP地址,那么用mosquitto的命令行以及MQTT.fx连接通信都没问题,但是如果用python 3.7及以上版本的都不行,其生成认证文件时Common Name必须是主机名。或者补救如下:

3.以上的ca.crt相当于CA机构颁发的证书,ca.key相当于证书的私钥,server.crt和client1.crt分别相当于既包含一些各端设备信息又包括各自公钥的文件,server.key和client1.key相当于服务器和客户端各自的私钥文件。

https://stackoverflow.com/questions/52855924/problems-using-paho-mqtt-client-with-python-3-7/52856943#52856943

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值