Credentials:从哪里来、如何保存与使用
认识 Mqttable 支持的四类 Credential,把 Broker 或 PKI 提供的材料保存为本地引用,并安全用于 MQTT 认证与 TLS。
- 作者:
- Mqttable
- 更新:
本页目录8 个章节
加载中...
认识 Mqttable 支持的四类 Credential,把 Broker 或 PKI 提供的材料保存为本地引用,并安全用于 MQTT 认证与 TLS。
加载中...
Mqttable 不负责给 Broker 创建账号或签发证书。Credentials 是当前 Runtime 中的本地安全注册表:你把密码、CA、客户端证书或私钥录入一次,之后 Connection、Proxy 和 Benchmark 只绑定不透明引用。
完成本页后,你应该能判断手里的材料属于哪一类、从哪里取得、保存后在哪里选择,并且能在不复制原文的情况下完成连接验证。
一条 Credential 有三个不同概念,不要混在一起:
SecretRef、CertRef 或 KeyRef。使用者绑定引用,不再读取原文。Username、Client ID、SNI 和 ALPN 是连接配置,不是 Credential。System CA 是操作系统信任库,也不会出现在 Credentials 列表中。
Mqttable 类型 | 通常从哪里来 | 用来做什么 | 保存结果 |
|---|---|---|---|
Password Secret | Broker 管理员、云控制台或身份系统签发的密码、Token 或 JWT。 | 与 Username 一起证明 MQTT Connection 的身份。普通登录不需要客户端证书。 | SecretRef |
CA Certificate | Broker 运营方、私有 PKI 或自签名部署提供的 CA Certificate 或 CA bundle。 | 验证 Broker 的服务器证书。公共 CA 已受系统信任时不需要保存这一项。 | CertRef |
Client Certificate | 企业 PKI 或 Broker 的 mTLS 注册流程签发给这个客户端的证书。 | mTLS 中向 Broker 证明客户端身份;必须与 Private Key 配对。 | CertRef |
Private Key | 通常在证书申请时本地生成,或通过获准的安全流程交付。 | 证明客户端持有与 Client Certificate 匹配的私钥;不能用 Broker 的 Server Key 代替。 | KeyRef |
最常见的云 Broker 只需要 Username、Password Secret 和 System CA。只有运营方明确要求私有 CA 或 mTLS 时,才需要 CA、Client Certificate 和 Private Key。证书角色仍不清楚时,先阅读看懂并配置 MQTT TLS 证书。

Registry 同时展示四种类型、安全 metadata 和实际使用者,不显示原始材料。
Production EMQX Password。Label 是可搜索 metadata,不能包含密码、Token、PEM 或 Private Key。TLS 表单中的 Upload 或 Paste 也会把材料转换为本地 Ref。Connection 中的 Raw password 则是单一 Connection 的直接录入路径,不会成为可复用的 Credentials 条目。需要复用、查看 Usage 或受控轮换时,使用 Saved SecretRef。

原始材料只进入这个受控录入区域;保存后页面只使用 Ref。
页面中的 Source 可能是 Dashboard、MCP intake 或 CLI intake。它只说明录入通道;例如 Source 为 Dashboard 的 Client Certificate 仍然可能由企业 PKI 签发。
Password Secret 绑定在具体的 MQTT Connection 上,而不是 Broker TLS 设置上:

Username 仍是普通字段;Password 使用保存的 SecretRef,原始值不会回显。
Token 或 JWT 由 Broker 的 Password 字段承载时,也保存为 Password Secret。登录成功只证明身份被接受,不代表该身份有权访问所有 Topic;权限仍由 Broker ACL 决定。
TLS Credentials 绑定在 Broker 定义上,供该 Broker 下的 Connection 使用:
mqtts、wss 或指定的安全 Transport,保持验证服务器身份开启,选择 System CA,通常不需要保存证书。CertRef。CertRef 和匹配的 Private Key KeyRef。SNI 和 ALPN 只在运营方给出明确值时修改。它们是 TLS 参数,不是 Credential。不要通过关闭服务器验证来处理 Hostname、证书链或 CA 错误。

Custom CA 验证 Broker;Client Certificate 与 Private Key 配对完成 mTLS。
同一类 Ref 还可以在 Proxy 上游 TLS 或 Benchmark 配置中复用。回到 Credentials 选择条目,可以在 Usage 中确认 Connection、Proxy 和 Benchmark 的具体引用位置。
Mqttable 通过多层边界减少原始材料暴露,而不是用“绝对安全”替代操作责任:
这些保护不覆盖已经离开安全录入边界的副本。源文件、剪贴板、截图、聊天、Issue 和备份仍需遵循组织策略。Ref 也属于当前 Runtime 的 capability,不能当成可跨 Runtime 搬运的秘密值。
Desktop 密钥恢复、数据目录和备份边界请参阅理解 Desktop 设置与数据边界。Agent 不应接触原始 Credential;对应流程见通过安全 Intake 绑定 TLS 凭据。
轮换时不要覆盖旧材料或先删后测。按以下顺序操作:
删除本地 Ref 不会撤销 Broker 端的密码、Token 或证书。材料泄露时,必须先在真正的签发或认证来源处轮换或撤销。
现象 | 先检查什么 |
|---|---|
无法建立 TCP | Host、Port、DNS、网络、防火墙和 Listener 是否正确。此时还没有使用 MQTT Credential。 |
TLS Handshake 失败 | System/Custom CA、Hostname、有效期、SNI,以及 Client Certificate 与 Private Key 是否匹配。 |
MQTT 认证被拒绝 | Username、所选 Password Secret、Token 有效期、Client ID 约束和 Broker 认证策略。 |
Connected 但操作被拒绝 | Topic ACL、发布/订阅权限和操作范围;不要修改 CA 或关闭 TLS 验证。 |
每次只改一层,再重新测试。连接参数请参阅 MQTT Broker 与 Connection 设置;连接成功后,按照MQTT 快速入门完成消息闭环。