双向认证指客户端与服务端之间相互认证。MQTT 通过服务端证书和客户端 CA 证书完成服务端和客户端的认证,以保证客户端和服务端通信链路的安全及可靠。
客户端对服务端的认证 通过 服务端证书 完成, MQTT 提供了默认的服务端证书,您也可以自有证书进行认证。
服务端对客户端的认证通过 CA 证书 完成。客户端发起连接请求时,会将客户端证书传递到服务端,服务端将根据客户端提前注册的 CA 证书验证该客户端证书的正确性,验证通过则允许客户端连接服务端。
约束与限制
单集群内服务端证书的最大数量为3个。
单集群内可以注册的 CA 证书最大数量为 32 个。
注意事项
在初次使用或者更换来自 SSL 证书的 CA 证书或者服务端证书时,需要主账号授权服务角色 MQTT_QCSLinkedRoleInSendSSLcertificate 以获取下载并应用 SSL 证书的功能。
如果在控制台更换了服务端证书和 CA 证书,对应的客户端需要更新证书,以免因为服务端和客户端证书更新不同步导致认证报错。为了保证证书切换过程平滑,消息队列 MQTT 版在您修改完成证书后,会提供十分钟左右的过渡时间,此时间内,新旧证书的认证均会通过认证,请您抓紧时间完成旧证书在客户端代码中的替换。
开启双向认证
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击资源管理 > 集群管理,选择好地域后,单击要配置证书的集群的“ID”,进入集群基本信息页面。
3. 在基本信息页面选择认证管理,二级页签选择 X.509 证书管理,点击右侧的编辑图标 
,在弹窗中完成证书配置。

认证方式:根据您的业务需求选择合适的认证方式,默认支持单向认证和双向认证两种认证方式,专业版/铂金版集群额外支持一机一证的模式(实际也是一种特殊的双向认证方式,具体使用详见 一机一证)。
服务端证书:将使用 MQTT 提供的默认服务端证书,后续您也可以绑定自定义证书。
CA 证书:若认证方式选择了双向认证,需要配置 CA 证书用于服务端对客户端的认证。

4. 单击提交,完成认证方式的配置,后续您需要配置相关的证书。
服务端证书:用于客户端对服务端的认证,可以使用 MQTT 提供的默认服务端证书,也可以绑定自定义证书。
CA 证书:用于服务端对客户端的认证,需手动配置。

配置服务端证书
步骤1:托管服务端证书
步骤2:绑定服务端证书
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 在集群详情页,选择服务端证书管理页签,单击左上角的绑定自定义证书。
证书来源:选择 SSL 证书。
服务端证书:在下拉框中勾选托管到腾讯云的 SSL 证书。
4. 单击提交,完成绑定。

说明:
在默认服务端证书的基础上可配置多个自定义证书,当前服务端自定义证书的最大个数上限为3个。
集群支持在开启单向认证/双向认证时,使用多个服务端证书进行认证。
步骤3:配置自定义域名
参数 | 填写说明 |
主机记录 | 填写使用证书的域名 |
记录类型 | CNAME |
记录值 | 如使用公网,填写 -。 如使用 VPC 内网,填写 mqtt-xxxx-nj-vpce-xxx.mqtt.tencenttdmq.com。 |
MX 优先级 | 无需填写 |
TTL(秒) | 建议保持为默认值600s |
假设选择的服务端证书 Subject Alternative Name 包含以下域名:
mqtt-abc.compay.com。参考 云解析-CNAME 记录,创建一个 CNAME 记录,将
mqtt-abc.compay.com 解析到集群的接入点提供的域名: mqtt-xxx-sh-public.mqtt.tencenttdmq.com,后续可以通过 mqtt-abc.company.com访问集群。禁用默认服务端证书
在绑定其他自定义证书后,可以禁用 TDMQ MQTT 版提供的默认服务端证书,具体步骤如下:
在服务端证书管理页面,单击默认服务器证书操作栏的禁用,在弹窗中确认后可以禁用默认证书。

解绑自定义证书
若您不再需要配置的自定义证书,可以将其解绑。解绑后,将无法通过证书对应的域名进行连接。

配置 CA 证书
步骤1:托管 CA 证书
步骤2:绑定 CA 证书
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入集群基本信息页面。
3. 在集群详情页,选择 CA 证书管理页签,单击左上角的绑定自定义证书。
证书来源:选择 SSL 证书。需授权 MQTT 服务可以下载并应用 SSL 证书能力。
CA 证书:在下拉框中勾选托管到腾讯云的 SSL 证书。

4. 单击提交,完成绑定。
解绑证书
若您不再需要配置的 CA 证书,可以将其解绑。解绑后,将无法通过证书进行连接。

配置 TLS 版本(可选)
若您的集群中部分设备或 SDK 因仅支持特定版本的 TLS 协议,导致与默认配置的服务端无法完成握手而连接失败时,可通过 TLS 协议版本配置的功能调整服务端所支持的 TLS 协议版本范围,使通信双方能够协商出一个共同认可的协议版本,从而解决因版本不匹配产生的兼容性问题,确保所有组件都能成功建立安全连接,保障集群通信的稳定性。
注意:
修改服务端支持的 TLS 协议版本配置后,将立即生效,影响集群下所有新连接/重新连接的客户端,请谨慎操作。
服务端默认支持 TLS 1.0 至 TLS 1.3 的全部版本,如需修改可参考如下配置步骤:
1. 进入 集群管理 > 认证管理,二级页签选择 X.509 证书管理,单击 TLS 协议版本配置右侧的编辑图标 
。

2. 在弹窗中选择支持的 TLS 版本范围。由于TLS协议仅支持开启连续版本或单一版本,因此修改配置方法如下:
若要启用连续版本(如 TLS 1.1 和 TLS 1.2):请先选择其中一个版本作为“最低版本”,再选择另一个版本作为“最高版本”,单击确定提交配置。
若要仅启用单个版本(如仅启用 TLS 1.2):请连续两次单击该版本,单击确定提交配置。
