首页/新闻资讯/正文详情

使用 Let‘s Encrypt 证书为 Mosquitto MQTT 代理启用 TLS 加密

发布时间:2026/9/24 16:14:43 来源:云帆数科 栏目:资讯中心
使用 Let‘s Encrypt 证书为 Mosquitto MQTT 代理启用 TLS 加密
后端消息队列消息路由【免费下载链接】mosquittoEclipse Mosquitto - An open source MQTT broker项目地址https://gitcode.com/gh_mirrors/mos/mosquitto点击查看免费下载本指南讲解如何将 Lets Encrypt 签发的免费证书接入 Eclipse Mosquitto MQTT 代理实现 8883 端口上的 TLS/SSL 加密通信。文章基于当前仓库的官方配置示例与源码实现覆盖证书签发前的配置规划、监听器 TLS 参数详解、证书自动续期与热加载机制帮助读者构建一套安全且免人工干预的加密 MQTT 服务。为什么需要 Lets Encrypt 证书Mosquitto 支持在监听器上启用基于证书的 TLS 加密客户端使用mqtts://或mqtt:// TLS 端口连接时服务端必须提供由受信任 CA 签发的证书链。自签名证书虽然也能完成握手但客户端需要额外配置cafile进行信任不利于大规模部署。Lets Encrypt 提供免费、自动化的 CA 服务其根证书被主流操作系统和客户端默认信任因此签发的证书可以直接用于 Mosquitto 的 TLS 监听器客户端无需任何特殊配置即可建立加密连接。配合仓库中的misc/letsencrypt/mosquitto-copy.sh部署钩子还能在证书续期后自动完成替换与重载。在 mosquitto.conf 中配置 TLS 监听器官方文档给出的配置方法非常简洁。假设你已经通过 certbot 等工具为域名example.com签发了证书在 mosquitto.conf 中写入以下内容listener 8883 cafile /etc/ssl/certs/ISRG_Root_X1.pem certfile /etc/letsencrypt/live/example.com/fullchain.pem keyfile /etc/letsencrypt/live/example.com/privkey.pem三个配置项的作用分别如下listener 8883在 8883 端口开启一个监听器MQTT over TLS 的惯例端口。配置了证书后该监听器即为 TLS 监听器普通listener 1883则保持明文 MQTT。同一进程中可以同时存在明文与 TLS 监听器。cafile指定 CA 证书文件路径用于验证客户端证书。填入/etc/ssl/certs/ISRG_Root_X1.pem即 Lets Encrypt 的 ISRG Root X1 根证书这一步主要是为了让客户端证书校验有可用的信任链如果不需要客户端证书认证也可省略该项。certfile服务端证书链文件对应 Lets Encrypt 的fullchain.pem包含站点证书与中间证书必须与keyfile配套提供。keyfile服务端私钥文件对应privkey.pem。私钥必须与证书匹配且建议将文件权限收紧如0600避免私钥泄露。从源码实现看这三个参数由 src/conf.c 中的conf__parse_string逐项解析并挂载到当前监听器结构体cur_listener-cafile、cur_listener-certfile、cur_listener-keyfile上且仅在编译期启用了WITH_TLS时才生效对应配置解析分支均有#ifdef WITH_TLS保护。因此编译安装时需确保开启了 TLS 支持默认开启可通过WITH_TLS选项控制。客户端连接与验证配置完成后重启 Mosquitto即可用客户端验证加密链路。以仓库自带的客户端为例使用mosquitto_pub发布消息mosquitto_pub -h example.com -p 8883 --cafile /etc/ssl/certs/ISRG_Root_X1.pem -t test/topic -m hello使用mosquitto_sub订阅消息mosquitto_sub -h example.com -p 8883 --cafile /etc/ssl/certs/ISRG_Root_X1.pem -t test/topic由于 Lets Encrypt 证书受系统信任许多客户端省略--cafile也能直接通过系统证书库完成校验。也可在服务端开启调试日志log_dest stdout、log_type all观察 TLS 握手是否成功。证书续期后的热加载SIGHUP 机制Lets Encrypt 证书有效期通常为 90 天必须定期续期。关键在于自 Mosquitto 2.0 起向 broker 进程发送 SIGHUP 信号即可触发证书重载无需重启服务而在 2.0 之前的版本运行中的监听器设置不会被更新只能完全重启 broker。这一行为在 src/signals.c 中实现收到 SIGHUP 时置位flag_reload随后主循环src/loop.c检测到该标志后依次执行config__read重新读取配置、listeners__reload_all_certificates()重载全部监听器证书并调用plugin__handle_reload通知插件。官方手册 mosquitto.8.xml 也明确说明收到 SIGHUP 时 Mosquitto 会尝试重载配置文件前提是以-c参数启动并同步重载 TLS 证书、关闭并重开日志。手动重载的命令为kill -HUP mosquitto 进程 ID或使用进程名匹配pkill -HUP -x mosquitto自动化certbot deploy 钩子脚本仓库在 misc/letsencrypt/mosquitto-copy.sh 提供了配套的 certbot 续期部署钩子脚本用于在证书自动续期后完成复制新证书 收紧权限 通知 Mosquitto 重载的全流程。脚本核心逻辑如下#!/bin/sh # 设置本脚本服务的域名 MY_DOMAINexample.com # 设置证书复制到的目录 CERTIFICATE_DIR/etc/mosquitto/certs for D in ${RENEWED_DOMAINS}; do if [ ${D} ${MY_DOMAIN} ]; then # 复制新证书到 Mosquitto 目录 cp ${RENEWED_LINEAGE}/fullchain.pem ${CERTIFICATE_DIR}/server.pem cp ${RENEWED_LINEAGE}/privkey.pem ${CERTIFICATE_DIR}/server.key # 设置文件属主为 Mosquitto chown mosquitto: ${CERTIFICATE_DIR}/server.pem ${CERTIFICATE_DIR}/server.key # 收紧文件权限 chmod 0600 ${CERTIFICATE_DIR}/server.pem ${CERTIFICATE_DIR}/server.key # 通知 Mosquitto 重载证书与配置 pkill -HUP -x mosquitto fi done使用要点依赖的环境变量certbot 在运行部署钩子时会导出RENEWED_DOMAINS本次续期的域名列表空格分隔可能是单个example.com也可能是www.example.com example.com多个与RENEWED_LINEAGE证书所在目录如/etc/letsencrypt/live/example.com。脚本通过MY_DOMAIN过滤仅处理指定域名的续期事件。部署位置与权限将脚本放入/etc/letsencrypt/renewal-hooks/deploy/并赋予可执行权限certbot 每次成功续期后会自动调用。与配置对应脚本将证书复制为server.pem与server.key并设置0600权限因此 mosquitto.conf 中的证书路径应相应改为listener 8883 certfile /etc/mosquitto/certs/server.pem keyfile /etc/mosquitto/certs/server.key这样每次续期后证书被替换随后pkill -HUP -x mosquitto触发热重载加密服务全程无感知更新。文件属主与权限chown mosquitto:确保私钥仅 Mosquitto 用户可访问chmod 0600进一步限制为仅属主可读写防止私钥被其他系统用户读取——这是安全部署的推荐实践。小结接入 Lets Encrypt 证书只需在 mosquitto.conf 中为监听器指定cafile、certfile、keyfile三个参数配合 Mosquitto 2.0 的 SIGHUP 证书热重载能力以及仓库提供的 certbot 部署钩子脚本即可实现证书到期自动续期、自动替换、自动重载的完整闭环。整个过程中 MQTT 服务持续在线客户端连接不中断是生产环境部署加密 MQTT 代理的高性价比方案。赞分享后端消息队列消息路由【免费下载链接】mosquittoEclipse Mosquitto - An open source MQTT broker项目地址https://gitcode.com/gh_mirrors/mos/mosquitto点击查看免费下载相关推荐TeslaMate HTTPS加密Lets Encrypt证书配置指南TeslaMate HTTPS加密Lets Encrypt证书配置指南 你是否还在为TeslaMate数据传输的安全性担忧本文将通过Traefik反向代理后端数据分析数据可视化图例、标题与注释怎么加才优雅scientific-visualization-book详解Matplotlib图表装饰四大技巧图例、标题与注释怎么加才优雅scientific visualization book详解Matplotlib图表装饰四大技巧 做科研绘图时你是否也经历过这文档教程数据可视化零停机部署Eclipse Mosquitto与Lets Encrypt证书自动化管理零停机部署Eclipse Mosquitto与Lets Encrypt证书自动化管理 物联网安全痛点TLS证书管理的3大挑战 你是否仍在手动更新MQTT后端消息队列消息路由上一篇SMUDebugTool终极指南免费开源AMD Ryzen处理器调试工具轻松上手下一篇如何免费解锁WeMod高级功能WandEnhancer终极指南让你三分钟搞定创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Flink CDC 完整上手指南:一条 YAML 搭出 MySQL 到 Doris 的实时数据同步作业
Flink CDC 完整上手指南:一条 YAML 搭出 MySQL 到 Doris 的实时数据同步作业

Flink CDC 完整上手指南:一条 YAML 搭出 MySQL 到 Doris 的实时数据同步作业 【免费下载链接】flink-cdc Flink CDC is a streaming data integration tool 项目地址: https://gitcode.com/GitHub_Trending/flin/flink-cdc Flink CDC 是一款流式数据集成工具… · 2026/9/24 16:14:37

banner4cj轮播动效大全:8种翻页动画(缩放、3D旋转、叠层)实战效果对比
banner4cj轮播动效大全:8种翻页动画(缩放、3D旋转、叠层)实战效果对比

banner4cj轮播动效大全:8种翻页动画(缩放、3D旋转、叠层)实战效果对比 【免费下载链接】banner4cj 广告图片轮播控件 项目地址: https://gitcode.com/Cangjie-TPC/banner4cj banner4cj 是一个用仓颉语言开发、面向鸿蒙系统的广告图片轮… · 2026/9/24 16:14:22

shadcn-vue Separator 组件完全指南:安装、源码解析与水平/垂直分隔实战
shadcn-vue Separator 组件完全指南:安装、源码解析与水平/垂直分隔实战

UI组件前端 【免费下载链接】shadcn-vue Vue port of shadcn-ui 项目地址: https://gitcode.com/gh_mirrors/sh/shadcn-vue 点击查看 免费下载 Separator(分隔线)是界面中最常用的视觉元素之一,用于在内容区块之间建立清晰的分隔… · 2026/9/24 16:14:22

CAI CyberPII-Bench 隐私基准实操:5 分钟跑通 PII 脱敏评估
CAI CyberPII-Bench 隐私基准实操:5 分钟跑通 PII 脱敏评估

CAI CyberPII-Bench 隐私基准实操:5 分钟跑通 PII 脱敏评估 【免费下载链接】cai Cybersecurity AI (CAI), the framework for AI Security 项目地址: https://gitcode.com/GitHub_Trending/cai3/cai 渗透演练导出的报告里,客户 IP 和工程师邮箱还以明文躺在日志中——模… · 2026/9/24 16:50:26

口播视频怎么拍才能又快又自然?我用了这5个方法,新手也能5分种
口播视频怎么拍才能又快又自然?我用了这5个方法,新手也能5分种

很多人刚开始拍口播,是不是这样:写稿子背半天,一开拍就忘词卡壳,眼神飘忽像在念课文,拍了几十遍还是不满意,一上午就废了?其实真不是你的问题,是方法错了。我刚开始拍的时候也是这样… · 2026/9/24 16:50:19

coss.com/ui 设计系统完全指南:Cal.com 官方 UI 组件库的架构、环境配置与开发实践
coss.com/ui 设计系统完全指南:Cal.com 官方 UI 组件库的架构、环境配置与开发实践

前端UI组件设计系统 【免费下载链接】coss coss.com/ui is the official design system of Cal.com 项目地址: https://gitcode.com/gh_mirrors/or/coss 点击查看 免费下载 本篇技术指南围绕 coss 仓库(GitHub 加速计划 / or / coss)的根 RE… · 2026/9/24 16:50:19

PX4-Autopilot 性能剖析实战:使用 Poor Man‘s Sampling Profiler(PMSP)与火焰图定位飞控瓶颈
PX4-Autopilot 性能剖析实战:使用 Poor Man‘s Sampling Profiler(PMSP)与火焰图定位飞控瓶颈

嵌入式物联网机器人自动驾驶智能硬件 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 点击查看 免费下载 本文介绍 PX4-Autopilot 内置的 Poor Mans Sampling Profiler(PMSP&#x… · 2026/9/24 16:50:19

Relay 18 缓存复用指南:深入解析 Fetch Policies 四种取值与 store 数据可用性判定
Relay 18 缓存复用指南:深入解析 Fetch Policies 四种取值与 store 数据可用性判定

前端开发工具 【免费下载链接】relay Relay is a JavaScript framework for building data-driven React applications. 项目地址: https://gitcode.com/gh_mirrors/relay29/relay 点击查看 免费下载 Relay 在应用运行过程中会把多次查询获取到的数据缓存到本地 st… · 2026/9/24 16:50:19

Inception v1(GoogLeNet)ONNX 图像分类模型实战指南:模型矩阵、ONNX Runtime 推理与 INT8/QDQ 量化
Inception v1(GoogLeNet)ONNX 图像分类模型实战指南:模型矩阵、ONNX Runtime 推理与 INT8/QDQ 量化

人工智能大模型计算机视觉NLP模型评测 【免费下载链接】models A collection of pre-trained, state-of-the-art models in the ONNX format 项目地址: https://gitcode.com/gh_mirrors/model/models 点击查看 免费下载 本篇技术指南以 validated/vision/classifi… · 2026/9/24 16:50:12

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码