本机测试(指的是在自己电脑部署broker和使用客户端的情况):需要将所有证书签名common-name设置成自己本机的IP。
客户使用:需要使用本机IP设置签名证书的请求common-name
说明:一般情况下,提示SSL失败的情况,基本都是秘钥和证书生成的问题。遇到这种情况,可以尝试重新生成证书请求文件,使用本机的IP添写证书请求文件的conmmon-name进行调试。
可能遇到的问题
sudo apt install uuid-dev
如果提示错误,可能是库版本高导致,这时需要降级安装。使用aptitude安装
sudo aptitude install uuid-dev(没有安装aptitude,需要先安装:sudo apt-get install aptitude)
1 第一次提示依旧在高版本的依赖库环境下安装,这时应该选择 否;
2 第二次提示降级安装,选择继续
sudo apt-get install libc-ares-dev
sudo echo "/usr/local/lib" >> /etc/ld.so.conf
sudo ldconfig
2.1. 添加用户名和密码
参考手册:http://mosquitto.org/man/mosquitto_passwd-1.html
cd /etc/mosquitto
首次添加用户:sudo mosquitto_passwd -c password.file username
添加多用户:sudo mosquitto_passwd -b password.file username password
2.2. 添加SSL认证机制支持
参考手册:http://mosquitto.org/man/mosquitto-tls-7.html
openssl req -new -x509 -days 1000 -extensions v3_ca -keyout ca.key -out ca.crt
1. 生成Server秘钥:
openssl genrsa -out server.key 2048
2. 生成一个签名证书请求文件,用于给CA签名生成Server证书
openssl req -out server.csr -key server.key -new
3. 将请求文件提交给CA,生成server证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 1000
#====================myconfig=================
#==================配置文件路径可以自己定义=======
#=============================================
retry_interval 20
port 8883
#tls_version tlsv1.0
password_file /etc/mosquitto/password.file
cafile /etc/mosquitto/ca.crt
certfile /etc/mosquitto/server.crt
keyfile /etc/mosquitto/server.key
2.3. 生效broker配置
指令参考手册:http://mosquitto.org/man/mosquitto-8.html
mosquitto -v -c /etc/mosquitto/mosquitto.conf.example
此客户端指的是Mqtt Broker为之服务的客户,需要用户自己操作。并将生成的文件提交Broker运维工作人员进行签名,最后使用运维人员反馈回的文件连接Broker。
客户端通过SSL连接broker,有两种连接方式:单向认证和双向认证;为了能连接成功broker,需要属于客户端自己的秘钥和被CA签名的证书,不同的客户端的证书是不一样的。
3.1. client生成秘钥和证书(指导客户操作1和2步骤)
1. 生成client秘钥
openssl genrsa -out client.key 2048
2. 生成一个签名证书请求文件,用于给CA签名生成client证书
openssl req -out client.csr -key client.key -new
3. 将客户端的请求文件给Mqtt Broker的运维人员。运维人员使用CA签名该客户端证书,最后运维人员反馈给客户ca.crt证书和client.crt
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 1000
3.2. 连接broker
参照手册:发布http://mosquitto.org/man/mosquitto_pub-1.html
参照手册:订阅http://mosquitto.org/man/mosquitto_sub-1.html
***单向认证连接***
订阅:mosquitto_sub -h 192.168.1.38 -p 8883 -u develop -P 666666 --cafile ./ca.crt -v -t #
发布:mosquitto_pub -h 192.168.1.38 -p 8883 -u develop -P 666666 --cafile ./ca.crt -t topic -m "hello world"
***双向认证连接***
订阅:mosquitto_sub -h 192.168.1.38 -p 8883 -u develop -P 666666 -i mosquitto_test --cafile ./ca.crt --cert ./client.crt --key ./client.key -v -t #
发布:mosquitto_pub -h 192.168.1.38 -p 8883 -u develop -P 666666 --cafile ./ca.crt --cert ./client.crt --key ./client.key -t topic -m "hello world"