mosquitto是一款实现了消息推送协议 MQTT v3.1/v3.1.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
本博客的测试是基于win10系统。其他平台没有测试
下载地址:http://mosquitto.org/download/
下载进行安装,在安装过程中,会提示需要自己下载它的依赖库:openssl和ptherads。到安装包给的路径下载依赖库,继续完成安装。
Openssl依赖库:http://slproweb.com/products/Win32OpenSSL.html
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/
mosquitto -v
订阅消息:mosquitto_sub -v -t #
发布消息:mosquitto_pub -t topic -m "hello world"
mosquitto_passwd -c password.file develop 666666
相关参数的说明可以在配置文件找到。
port 8883
password_file password.file
bind_address 192.168.1.38
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"
1.单向SSL证书,指的是,MQTT的客户端访问MQTT的服务器端的时候,如果用到了SSL加密通信,在建立SSL加密通信前,客户端需要通过证书来验证服务端是否是可信任的,所以客户端会把服务器端传过来的证书和自身的已经的在某种途径下得到的服务器端CA证书或者服务器证书进行比较,如果匹配成功,则运行建立可信任的安全的SSL连接。*
2.所谓的双向的SSL认证,打个通俗的比方就是,在进行SSL加密通信前,通信的双方(在咱们的例子中是mosquitto服务器端和MQTT客户端(消息的发送或者接收端))需要相互验证各自的证书是否合法。比如,是否是一个合法的CA颁发的等等。
为了能通信认证成功,必须保证ca.crt client.crt server.crt证书文件的参数信息是有区别的,不然客户端和服务端会因为证书信息相同,区分不了客户端和服务端的证书文件
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
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。此时再次订阅发布,客户端可以成功连接服务器。
订阅: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"