客户端证书是由 CA 证书签发给客户端设备的数字证书,客户端在与服务端建立连接时,服务端会根据客户端证书对客户端的身份进行安全验证。验证成功后,双方可借助证书中内置的加密密钥实现安全通信;若验证未通过,服务端将拒绝该客户端的连接请求。
约束与限制
每秒注册的客户端证书最多数量为15个,超出后注册失败。
前提条件
注册客户端证书
自动注册客户端证书
如果选择自动注册客户端,则客户端在和服务端连接时,服务端会校验客户端证书关联的 CA 证书是否已经注册,如果对应的 CA 证书未注册,则认证不通过,客户端连接会被拒绝。
如果对应的 CA 证书已注册,则认证通过,客户端证书会被自动注册并出现在客户端证书管理页面。
手动注册客户端证书
步骤1:使用 CA 证书生成客户端证书
以下以 RSA 算法为例,简单介绍如何使用 CA 证书生成服务端或客户端证书。
如果您使用自签的 CA 证书来生成客户端证书,您可以按照以下指引来生成。
1. 创建一个名称为
client.csr.cfg
的文件,文件内容按照实际情况对下文进行修改。[req]default_bits = 2048prompt = nodefault_md = sha256distinguished_name = dn[dn]C=CNST=SHXXXL=SHO=TXOU=MQTTemailAddress=xxx@xxxCN=client-test
2. 创建一个名称为
client.crt.cfg
的文件,内容如下:authorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
3. 生成客户端证书私钥和验证证书的签发请求文件(csr)。
openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config <(cat client.csr.cfg)
openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config client.csr.cfg
4. 生成客户端证书。
openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out client.crt -days 500 -sha256 -extfile client.crt.cfg
步骤2:注册客户端证书
1. 登录 MQTT 控制台。
2. 在左侧导航栏单击资源管理 > 集群管理,选择好地域后,单击要配置证书的集群的“ID”,进入集群基本信息页面。
3. 进入客户端证书管理页面,单击注册客户端证书。在以下弹窗填写客户端证书的相关信息:
证书来源:手动注册。
CA 证书:选择已经注册了的 CA 证书。
客户端证书:按照文件格式要求上传已签发好的客户端证书。
客户端 ID:“一机一证” 场景下的补充字段,非必填,您可以根据实际场景填写。如果客户端连接时传的 client id 为空,该字段会被认为表示 client id;如果 client id 和该字段均为空,则服务端会以客户端证书的 Common Name 字段为准。因此假设客户端没有传 client id 的情况下,请注意保证该字段不要有重复的情况。
是否激活:客户端证书注册后的生效状态,默认开启。您也可以在注册完成后,在控制台手动开启。

4. 单击提交,完成客户端证书注册。
管理客户端证书
客户端证书完成注册后,在客户端证书的列表页,可以查看已经注册的证书的状态,客户端证书有三种状态:已激活、未激活、已吊销。已吊销的证书可以被删除。

您可以随时在页面管理已注册的客户端证书。
操作 | 操作路径 | 说明 |
筛选生效/失效时间 | 单击生效/失效时间旁的 ![]() | 筛选出已失效和即将失效(30天内即将过期)的客户端证书。 |
取消激活证书 | 单击操作栏的激活证书 | 证书取消激活后,使用当前证书的客户端在连接时会被拒绝,因此在进行证书的状态流转时需要特别注意对于客户端连接的影响。 |
删除证书 | 单击操作栏的更多 > 删除 | 证书处于激活状态下,不支持被删除,只有处于“未激活”或者“已吊销”状态的证书可以正常删除。 |
吊销证书 | 单击操作栏的更多 > 吊销 | 吊销客户端证书后,将无法再激活使用证书,证书状态改变后,新状态实际生效有分钟级的延时。 |
查看证书详情 | 点击证书的序列号 | 在证书详情页面,会展示证书如下信息: 基础信息: 展示证书的状态、Common Name、Serial Number 等信息。 关联的客户端:展示当前证书关联的客户端列表。 |