设备证书管理

更新时间:

云消息队列 MQTT 版支持使用设备证书进行客户端的接入认证。本文介绍如何使用CA证书签发设备证书,并在云消息队列 MQTT 版控制台管理设备证书,包括查询证书、激活或注销证书以及删除证书。

背景信息

设备证书是由CA根证书签发给客户端设备使用的数字证书,用于客户端和服务端连接时,服务端对客户端进行安全认证。认证通过后服务端和客户端可基于证书内的加密密钥进行安全通信,若认证不通过则服务端拒绝客户端接入。

使用设备证书认证时,必须保证签发该设备证书的CA证书已在云消息队列 MQTT 版服务端中注册。更多信息,请参见注册CA证书

客户端设备使用设备证书进行接入认证时,服务端会根据已注册的CA证书验证设备证书是否正确,若CA证书和设备证书匹配成功,则客户端认证通过,且系统会将该设备证书自动注册到服务端中。

使用限制

  • 仅铂金版实例和专业版实例支持设备证书管理功能。

  • 云消息队列 MQTT 版仅支持对已在服务端注册的设备证书进行操作。

  • 设备证书的SN序列号必须唯一。

前提条件

使用CA证书签发设备证书

本操作以自签名CA证书为例签发设备证书,自签名CA证书生成步骤,请参见自签CA证书

生成设备证书

RSA算法证书

  1. 准备配置文件。

    1. 创建一个名称为client.csr.cfg的文件,内容如下:

      说明

      [dn]内容需要根据您的实际需求修改。

      [req]
      default_bits = 2048
      prompt = no
      default_md = sha256
      distinguished_name = dn
      
      [dn]
      C=CN
      ST=ZJ
      L=HZ
      O=ALI
      OU=MQTT
      emailAddress=xxx@xxx
      CN=client-test
    2. 创建一个名称为client.crt.cfg的文件,内容如下:

      authorityKeyIdentifier=keyid,issuer
      basicConstraints=CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
  2. 根据配置生成设备证书私钥和CSR文件。

    • Mac:

      openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config <(cat client.csr.cfg)
    • Windows:

      openssl req -new -sha256 -nodes -out client.csr -newkey rsa:2048 -keyout client.key -config client.csr.cfg
  3. 生成设备证书。

    openssl x509 -req -in client.csr -CA CA.crt -CAkey CA.key -CAcreateserial -out client.crt -days 500 -sha256 -extfile client.crt.cfg

ECC算法证书

  1. 准备配置文件。

    1. 创建一个名称为client.csr.cfg的文件,内容如下:

      说明

      [dn]内容需要根据您的实际需求修改。

      [req]
      default_bits = 2048
      prompt = no
      default_md = sha256
      distinguished_name = dn
      
      [dn]
      C=CN
      ST=ZJ
      L=HZ
      O=ALI
      OU=MQTT
      emailAddress=xxx@xxx
      CN=client-test
    2. 创建一个名称为client.crt.cfg的文件,内容如下:

      authorityKeyIdentifier=keyid,issuer
      basicConstraints=CA:FALSE
      keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyCertSign
  2. 执行如下命令,生成设备证书的私钥client.key

    openssl ecparam -out client.key -name prime256v1 -genkey
  3. 执行如下命令,生成设备证书的client.csr

    • Mac:

      openssl req -new -sha256 -nodes -out client.csr -key client.key -config <(cat client.csr.cfg)
    • Windows:

      openssl req -new -sha256 -nodes -out client.csr -key 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
  5. 执行如下命令,将设备证书私钥的格式转换为PKCS#8格式。

    openssl pkcs8 -topk8 -nocrypt -in client.key -out client_pkcs8.key
    重要

    使用代码连接时参数deviceKyPath应该填写client_pkcs8.key 的路径,而不是client.key。

生成设备证书的证书链

  1. 创建一个名称为client_chain.crt的空的证书链文件。

    touch client_chain.crt
  2. 将设备证书内容复制到证书链文件中。

    cat client.crt >> client_chain.crt
  3. 将CA证书内容复制到证书链文件并将其追加到设备证书内容后面。

    cat CA.crt >> client_chain.crt

您可以执行cat client_chain.crt命令查看服务器证书链内容。

    说明

    设备证书需要与签发的CA证书先生成证书链,才能用于连接到服务端。

    证书链生成实际上是将几个证书的内容拼接到一起,顺序为子级证书内容在上,父级证书内容在下。

查询设备证书

您可以查看指定实例下所有已注册过的设备证书,或根据证书SN序列号进行精确查找。

  1. 登录云消息队列 MQTT 版控制台,并在左侧导航栏单击实例列表

  2. 在顶部菜单栏选择目标地域,然后在实例列表中单击实例名称进入实例详情页面。

  3. 在左侧导航栏选择证书管理 > 设备证书

    设备证书页面,显示所有已在服务端注册过的设备证书。

  4. 在设备证书列表上方的搜索框中输入设备证书SN序列号或CA证书SN序列号查询指定设备证书。

    • 输入设备证书SN序列号,查询结果为该SN序列号对应的唯一的设备证书。

    • 输入CA证书SN序列号,查询结果为该CA证书所签发的且已在服务端注册的所有设备证书。

激活或注销设备证书

您可以通过激活和注销操作修改证书的生效状态。证书状态包含激活未激活。设备证书在服务端注册后默认为激活状态。

  • 证书为激活状态:若您需要临时禁用某个证书,可以将该证书注销,注销后证书不可用且状态变为未激活

  • 证书为未激活状态:若您要恢复某个证书,可以将该证书重新激活,激活后证书状态变为激活

在设备证书列表中,选择目标证书,在其操作列单击注销激活

删除设备证书

删除设备证书表示将指定的设备证书的注册信息从服务端的存储记录中删除,并非将证书内容直接删掉。

设备证书删除后,客户端使用该设备证书进行接入认证,如果关联的CA证书正确并有效,该设备证书会被重新自动注册到服务端,并通过认证。

  1. 在设备证书列表中,选择目标证书,在其操作列单击删除

  2. 在弹出的提示对话框中单击确定