mqtt支持加密通讯
1. mqtt第三方库支持openssl
a, 编译openssl库(我使用的是1.0.1),在mqtt源码目录下创建openssl文件夹,并拷贝编译完成的库文件与头文件到此文件夹下。
b, 修改mqtt(源码从git上获取https://github.com/eclipse/paho.mqtt.c.git )编译选项,PAHO_WITH_SSL,OPENSSL_SEARCH_PATH。修改后需要重新清除,重新编译。
2. mosquitto支持openssl
a, 通过apt-get install mosquitto安装的mosquitto默认关闭了ssl相关功能
b, 通过git(https://github.com/eclipse/mosquitto.git)重新安装编译mosquitto
c, mosquitto 配置,启动命令mosquitto -c mosquitto.conf -v
port 8883
cafile /home/mosquitto_logs/certificate/ca/ca.crt
certfile /home/mosquitto_logs/certificate/server/server.crt
keyfile /home/mosquitto_logs/certificate/server/server.key
3. 自己创建需要的认证文件
a, pc端安装openssl
b, 使用generate.sh脚本创建认证文件,生成pem
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the axTLS project nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
# Generate the certificates and keys for testing.
#PROJECT_NAME="TLS Project"# Generate the openssl configuration files.
cat > ca_cert.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
prompt = no[ req_distinguished_name ]O = $PROJECT_NAME Dodgy Certificate Authority
EOFcat > server_cert.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
prompt = no[ req_distinguished_name ]O = $PROJECT_NAMECN = 192.168.199.188
EOFcat > client_cert.conf << EOF
[ req ]
distinguished_name = req_distinguished_name
prompt = no[ req_distinguished_name ]O = $PROJECT_NAME Device CertificateCN = 192.168.199.168
EOFmkdir ca
mkdir server
mkdir client
mkdir certDER# private key generation
openssl genrsa -out ca.key 1024
openssl genrsa -out server.key 1024
openssl genrsa -out client.key 1024# cert requests
openssl req -out ca.req -key ca.key -new \-config ./ca_cert.conf
openssl req -out server.req -key server.key -new \-config ./server_cert.conf
openssl req -out client.req -key client.key -new \-config ./client_cert.conf # generate the actual certs.
openssl x509 -req -in ca.req -out ca.crt \-sha1 -days 5000 -signkey ca.key
openssl x509 -req -in server.req -out server.crt \-sha1 -CAcreateserial -days 5000 \-CA ca.crt -CAkey ca.key
openssl x509 -req -in client.req -out client.crt \-sha1 -CAcreateserial -days 5000 \-CA ca.crt -CAkey ca.keyopenssl x509 -in ca.crt -outform DER -out ca.der
openssl x509 -in server.crt -outform DER -out server.der
openssl x509 -in client.crt -outform DER -out client.dermv ca.crt ca.key ca/
mv server.crt server.key server/
mv client.crt client.key client/mv ca.der server.der client.der certDER/rm *.conf
rm *.req
rm *.srl
c, rm_ssl.sh
rm ca/ -rf
rm certDER/ -rf
rm client/ -rf
rm server/ -rf
d, 不使用脚本生成认证文件
openssl genrsa -des3 -out ca.key 2048
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
openssl genrsa -out server.key 2048
openssl req -new -out server.csr -key server.key
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3600
e, 方便统一操作,对文件目录结构操作
certificate
├── ca
│ ├── ca.crt
│ ├── ca.key
│ └── ca.srl
└── server├── server.crt├── server.csr└── server.key
4. Linux下两个终端通讯
a, mosquitto_sub -h 192.168.199.188 -p 8883 -t echo_on --cafile ca/ca.crt --cert client/client.crt --key client/client.key
b, mosquitto_pub -h 192.168.199.188 -p 8883 -t echo_on -m "temperature:15" --cafile ca/ca.crt --cert client/client.crt --key client/client.key
c, 实际效果同预期一致
5. 方便抓wireshark包,Linux终端同windows mqttfx通讯
a, linux下终端连接,参考列项4
b, mqtt fx针对ssl的配置如下
使用列项3中bc方法生成的认证文件如下配置
使用列表3中de方法生成的认证文件如下配置
c, wireshark抓包截图
使用tsl
未使用tls
参考:https://blog.csdn.net/espressif/article/details/78541435
https://baijiahao.baidu.com/s?id=1610669918084024139&wfr=spider&for=pc
mqtt支持加密通讯相关推荐
- Javascript到PHP加密通讯的简单实现
互联网上大多数网站,用户的数据都是以明文形式直接提交到后端CGI,服务器之间的访问也大都是明文传输,这样可被一些别有用心之人通过一些手段监听到.对安全性要求较高的网站,比如银行和大型企业等都会使用HT ...
- (JS-PHP)使用RSA算法进行加密通讯
用户名密码明文直接POST到后端,很容易被别人从监听到.注:包括使用MD5等哈希函数处理后的数据,这里也算做明文(现在MD5爆破网站已经很多了~).对安全性要求较高的网站,比如银行和大型企业等都会使用 ...
- 马斯克推荐加密通讯聊天软件Signalv5.13.8跨平台国际版几何管家出品
手机软件 - 技术教程 - 电脑软件 - 7月 15, 2021 软件介绍 Signal 是由 Signal Foundation 和 Signal Messenger LLC 开发的跨平台加密消息通 ...
- Signal Desktop for Mac(专业加密通讯软件)
想要让自己聊天信息变得更加安全有隐秘性吗?Signal Desktop for Mac版是一款Macos上的专业加密通讯工具,十分安全.使用了信号协议,该协议结合了预密钥,Double Ratchet ...
- Macos上的专业加密通讯工具,十分安全。使用了信号协议,该协议结合了预密钥,Double Ratchet算法和3-DH握手信号。
想要让自己聊天信息变得更加安全有隐秘性吗?Signal Desktop for Mac版是一款Macos上的专业加密通讯工具,十分安全.使用了信号协议,该协议结合了预密钥,Double Ratchet ...
- 浅谈客户端与服务端的加密通讯(HTTPS/AES/RSA/RequestBodyAdviceAdapter/ResponseBodyAdvice)
目录 前言 HTTPS与SSL证书 AES对称加密 RSA非对称加密 AES + RSA 组合加密 服务端请求参数解密拦截器RequestBodyAdviceAdapter 服务端返回参数加密拦截器R ...
- Apache Httpd 2.2 配置CA证书,实现Https加密通讯
什么是CA证书 关于什么是CA证书,以及如何使用Open-SSL申请和搭建CA证书,我们在之前的文章中已经有过介绍,这里不再赘述.若有疑问,可参考之前的文章. http://www.pojun.tec ...
- .NET+Sqlite如何支持加密
点击上方蓝字关注我们 .NET+Sqlite如何支持加密 Sqlite SQLite 来源于公共领域 SQLite Is Public Domain. 确保代码不会受到任何专有或许可内容的污染,没有任 ...
- 12306加密传输_三大运营商发5G消息白皮书:短消息服务升级,支持加密传输
4月8日,中国电信.中国移动.中国联通联合举行线上发布会,共同发布<5G消息白皮书>.<白皮书>阐述了5G消息的核心理念,明确了相关业务功能及技术需求,提出了对5G消息生态建设 ...
最新文章
- 后端好书阅读与推荐(续六)
- cpu缓冲区大小怎么设置_JAVA高薪面试必备知识点Volatile底层原理探究CPU在作怪
- mysql 5.6.6_Mysql下Limit注入方法(此方法仅适用于5.0.0mysql5.6.6的版本)
- 物理设计-数据类型的选择
- 数据特征分析-正太分布
- python文件及异常处理
- HTML左侧下拉列表,HTML中的下拉列表 select
- PHP Socket编程(转)
- Atom 和 Sublime Text 相比哪个好?
- open cv+C++错误及经验总结(十三)
- 内网漫游之SOCKS代理大结局
- db_create_file_dest
- RobotFramework相关
- set name utd8_ml utd 8机器学习数据的最新生命
- 光子映射光子追踪学习分享
- 深度学习基础知识---梯度弥散 梯度爆炸
- vue开发单页面应用
- 通过拷贝block实现system文件大量坏块恢复
- [管理篇]VMWare搭建Openstack——Cinder完成对云硬盘的扩容
- Java中将图片转为GIF(实用)