当前位置: 首页 > news >正文

第7章 Mosquitto增加SSL/TLS加密通信

第7章 SSL/TLS加密通信

7.1 TLS基础

未加密

明文传输

可被窃听

TLS加密

加密传输

身份验证

数据完整性

7.2 证书类型

X.509证书

CA证书

服务器证书

客户端证书

根证书

中间证书

单域名

通配符

SAN多域名

双向认证

7.3 生成自签名证书

#!/bin/bash# 生成CA私钥openssl genrsa-outca.key2048# 生成CA证书openssl req-new-x509-days3650-keyca.key-outca.crt\-subj"/CN=MQTT CA"# 生成服务器私钥openssl genrsa-outserver.key2048# 生成服务器CSRopenssl req-new-keyserver.key-outserver.csr\-subj"/CN=mosquitto-server"# CA签名服务器证书openssl x509-req-days365-inserver.csr-CAca.crt-CAkeyca.key\-CAcreateserial-outserver.crt# 生成客户端私钥openssl genrsa-outclient.key2048# 生成客户端CSRopenssl req-new-keyclient.key-outclient.csr\-subj"/CN=mqtt-client"# CA签名客户端证书openssl x509-req-days365-inclient.csr-CAca.crt-CAkeyca.key\-CAcreateserial-outclient.crtecho"证书生成完成!"

证书生成流程

开始

生成CA密钥

生成CA证书

生成服务器密钥

生成服务器CSR

CA签名服务器证书

生成客户端密钥

生成客户端CSR

CA签名客户端证书

完成

7.4 Mosquitto TLS配置

单向认证(服务器)

# /etc/mosquitto/mosquitto.conf# TLS监听器listener8883certfile /etc/mosquitto/certs/server.crt keyfile /etc/mosquitto/certs/server.key cafile /etc/mosquitto/certs/ca.crt# 要求TLSallow_anonymousfalsepassword_file /etc/mosquitto/passwd

双向认证(客户端证书)

listener8883certfile /etc/mosquitto/certs/server.crt keyfile /etc/mosquitto/certs/server.key cafile /etc/mosquitto/certs/ca.crt# 要求客户端证书require_certificatetrueuse_identity_as_usernametrue# 或者使用CA验证tls_version tlsv1.2

7.5 客户端连接

mosquitto_pub/sub

# 单向认证mosquitto_sub-hbroker.example.com-p8883\--cafile/path/to/ca.crt\-t"test/#"# 双向认证mosquitto_pub-hbroker.example.com-p8883\--cafile/path/to/ca.crt\--cert/path/to/client.crt\--key/path/to/client.key\-t"test"-m"hello"# 跳过证书验证(仅测试)mosquitto_sub-hlocalhost-p8883\--insecure\-t"test/#"

Python客户端

importpaho.mqtt.clientasmqtt client=mqtt.Client()client.tls_set(ca_certs="/path/to/ca.crt",certfile="/path/to/client.crt",keyfile="/path/to/client.key",tls_version=ssl.PROTOCOL_TLSv1_2)client.connect("broker.example.com",8883)

7.6 TLS握手流程

服务器客户端服务器客户端TLS握手完成开始加密通信ClientHello(支持的加密套件)ServerHello(选择的加密套件)+ 服务器证书CertificateRequest(双向认证)验证服务器证书客户端证书(如果请求)ClientKeyExchange(预主密钥)CertificateVerify(签名验证)ChangeCipherSpecFinishedChangeCipherSpecFinished

7.7 安全检查清单

TLS安全检查

证书有效性

加密套件

协议版本

密钥长度

未过期

受信任CA

禁用弱算法

优先ECDHE

TLS 1.2+

禁用SSLv3

RSA 2048+

ECDSA 256+

7.8 本章小结

掌握了Mosquitto的TLS配置,实现了安全的MQTT通信。

http://www.jsqmd.com/news/593685/

相关文章:

  • COMSOL热应力仿真新手入门:从零开始设置热膨胀参数(附案例解析)
  • 快速上手:如何使用Ryzen SDT调试工具轻松优化AMD处理器性能
  • GitHub中文插件终极指南:3分钟让GitHub界面全面中文化
  • 深度学习中的目标检测算法:从原理到实践
  • yolo视觉十大新手项目推荐
  • OpenClaw v2026.4.2 深度解读:插件边界继续外移,Task Flow 真正走向可持久化运维
  • Anthropic 收购 Oven 后,Claude Code 用运行时写了一篇护城河文章
  • 基于FPGA技术的QAM调制解调系统研究与实践:详细实验文档解析
  • 智能应急灯V16:多场景照明解决方案
  • Python 中的配置文件管理:从基础到高级应用
  • 2026 年 1月 24 日-KB5078127(OS内部版本26200.7628 和 26100.7628)带外
  • TWLHAI 生成式引擎 · 正式命名白皮书
  • Flightmare性能调优指南:从卡顿到丝滑的4个突破点
  • iframe内嵌帆软报表单点登录失败?Chrome80+跨域Cookie问题实战解决
  • 四轮转向汽车联合仿真模型技术研究——基于Carsim-Simulink滑模控制模型的实现与应用...
  • SeaTunnel Web安装踩坑记:从MySQL驱动到Hazelcast配置,我都经历了什么
  • AI率90%用指令降和用工具降,效果对比实测
  • Web前端开发技术第五周周二课堂笔记
  • 2026 年1月 17 日-KB5077744(OS 内部版本26200.7627 和 26100.7627)带外
  • Vivado团队协作效率翻倍:如何用企业级Vivado_init.tcl统一团队编译环境?
  • 2026 年1月 13 日-KB5074109(OS内部版本 26200.7623 和 26100.7623)
  • 率零测评:AI率83%的文章降完是什么效果
  • 计算机毕业设计:Python地铁线路客流与票价数据可视化系统 Django框架 数据分析 可视化 大数据 机器学习 深度学习(建议收藏)✅
  • Web前端开发技术第五周周五课堂笔记
  • 计算机毕业设计:Python二手车分析与定价系统 Django框架 可视化 线性回归 数据分析 机器学习 深度学习 AI 大模型(建议收藏)✅
  • 同一篇80%AI率的论文,3种方法降完效果对比
  • 2026年4月南明区回门宴场地,一站式婚礼/婚宴/寿宴/大型宴席/订婚宴/婚礼堂/大型团建聚餐,回门宴场地怎么联系 - 品牌推荐师
  • DFX测试与专项测试:非功能性测试的深度解析与实践指南
  • MATLAB代码:基于风光发电不确定性的机组组合随机优化程序
  • 基于FPGA的HBM2系统设计:高效读写接口时序控制与DDR5相比大幅优化性能与功耗