windows平台Mosquitto使用

介绍

mosquitto是一款实现了消息推送协议 MQTT v3.1/v3.1.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
本博客的测试是基于win10系统。其他平台没有测试

安装

下载地址:http://mosquitto.org/download/

windows平台Mosquitto使用_第1张图片

下载进行安装,在安装过程中,会提示需要自己下载它的依赖库:openssl和ptherads。到安装包给的路径下载依赖库,继续完成安装。

Openssl依赖库:http://slproweb.com/products/Win32OpenSSL.html
windows平台Mosquitto使用_第2张图片

pthreads依赖库:ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/ 下载pthreadVC2.dll

最后拷贝Openssl路径下的libeay32.dll ssleay32.dll 和pthreads依赖库pthreadVC2.dll,到mosquitto安装路径即可。

使用

mosquitto手册:http://mosquitto.org/man/

1、默认broker配置的无SSL连接

  • 启动命令提示符,首先启动mosquitto服务器
mosquitto -v 

windows平台Mosquitto使用_第3张图片

  • 启动另外两个命令提示符,客户端进行消息订阅和发布
订阅消息:mosquitto_sub -v -t #
发布消息:mosquitto_pub -t topic -m "hello world"

这里写图片描述

这里写图片描述

  • 可以看到发布的消息已经推送给订阅者了。关于发布订阅的命令,可以mosquitto_pub.exe –help和mosquitto_sub –help查阅,也可以直接到手册页,进入相关主题查阅。

2、自定义broker配置的无SSL认证

  • 设置自己的用户名和密码
mosquitto_passwd -c password.file develop 666666 
  • 配置Broker
相关参数的说明可以在配置文件找到。
port 8883
password_file password.file
bind_address 192.168.1.38
  • Broker应用配置
mosquitto -v -c mosquitto.conf
  • 发布和订阅
订阅:mosquitto_sub.exe -h 192.168.1.38 -p 8883 -u develop -P 666666 -v -t #
发布:mosquitto_pub.exe -h 192.168.1.38 -p 8883 -u develop -P 666666 -t topic -m "hello world"

3、自定义broker配置的单向SSL认证

1.单向SSL证书,指的是,MQTT的客户端访问MQTT的服务器端的时候,如果用到了SSL加密通信,在建立SSL加密通信前,客户端需要通过证书来验证服务端是否是可信任的,所以客户端会把服务器端传过来的证书和自身的已经的在某种途径下得到的服务器端CA证书或者服务器证书进行比较,如果匹配成功,则运行建立可信任的安全的SSL连接。*
2.所谓的双向的SSL认证,打个通俗的比方就是,在进行SSL加密通信前,通信的双方(在咱们的例子中是mosquitto服务器端和MQTT客户端(消息的发送或者接收端))需要相互验证各自的证书是否合法。比如,是否是一个合法的CA颁发的等等。

为了能通信认证成功,必须保证ca.crt client.crt server.crt证书文件的参数信息是有区别的,不然客户端和服务端会因为证书信息相同,区分不了客户端和服务端的证书文件

  • 生成证书文件,可以到http://mosquitto.org/man/mosquitto-tls-7.html,按着这个步骤执行指令。
  • broker配置文件:
retry_interval 20
port 8883
password_file password.file
bind_address 192.168.1.38
cafile C:\MqttSSL\ca.crt
#tls_version tlsv1.0
certfile C:\MqttSSL\server.crt
keyfile C:\MqttSSL\server.key
  • Broker应用配置
mosquitto.exe -v -c mosquitto.conf
  • 发布和订阅
订阅:mosquitto_sub.exe -h 192.168.1.38 -p 8883 -u develop -P 666666 --cafile C:\MqttSSL\ca.crt -v -t #
发布:mosquitto_pub.exe -h 192.168.1.38 -p 8883 -u develop -P 666666 --cafile C:\MqttSSL\ca.crt -t topic -m "hello world"

虽然客户端能认证成功服务端的证书文件,但是因为ca.crt不是系统信任的证书,所以不会通信成功,此时需要将自己生成的ca证书添加到系统根证书信任名单中:在“运行”输入“mmc”打开管理控制台,然后点击“文件”中的“添加/删除管理单元”,在“可用的管理单元”列表中找到“证书”,点击“添加”-“计算机账户”-“下一步”-“本地计算机”-“完成”,点击确定,可以看到控制台中出现了证书树,找到“受信任的根证书颁发机构”-“证书”,点击右键,所有任务,导入ca.file。此时再次订阅发布,客户端可以成功连接服务器。

4、自定义broker配置的双向SSL认证

  • 发布和订阅
订阅:mosquitto_sub.exe -h 192.168.1.38 -p 8883 -u develop -P 666666 -i mosquitto_test --cafile C:\MqttSSL\ca.crt --cert C:\MqttSSL\client.crt --key C:\MqttSSL\client.key -v -t #
发布:mosquitto_pub.exe -h 192.168.1.38 -p 8883 -u develop -P 666666 --cafile C:\MqttSSL\ca.crt --cert C:\MqttSSL\client.crt --key C:\MqttSSL\client.key -t topic -m "hello world"

windows平台Mosquitto使用_第4张图片
发布主题
windows平台Mosquitto使用_第5张图片

你可能感兴趣的:(MQTT)