
# 注册X.509证书认证的设备
X.509是一种用于通信实体鉴别的数字证书，物联网平台支持设备使用自己的X.509证书进行认证鉴权。使用X.509认证技术时，设备无法被仿冒，避免了密钥被泄露的风险。
注册X.509证书认证的设备前，您需要先在物联网平台上传设备的CA证书，然后在注册设备时将设备证书同设备进行绑定。本文介绍如何在物联网平台上传设备的CA证书，以及注册X.509证书认证的设备。
#### 限制说明
- 当前只有通过MQTT接入的设备支持使用X.509证书进行设备身份认证。
- 每个用户最多上传100个CA证书。
 
#### 上传CA证书
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 在左侧导航栏选择"设备 \> 设备证书"，进入"CA证书"页签，单击"上传证书"。
3. 在弹出的对话框中，单击"添加文件"，然后单击"确定"。 
   图1CA证书-上传证书   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001981498265.png "点击放大")
   ![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
   设备的CA证书由设备厂商提供，调测时可[自行制作调测证书]，商用时建议更换为商用证书，否则会带来安全风险。如果已购买CA证书（pem、jks等），可直接上传到平台。
   
   
 
#### 制作设备CA调测证书
本文以Windows环境为例，介绍通过Openssl工具制作调测证书的方法，生成的证书为PEM编码格式的证书。
1. 在浏览器中访问[这里](https://slproweb.com/products/Win32OpenSSL.html)，下载并进行安装OpenSSL工具。
2. 以管理员身份运行cmd命令行窗口。
3. 执行cd c:\\openssl\\bin（请替换为openssl实际安装路径），进入openssl命令视图。
4. 执行以下命令生成生成密钥对。
   ```
   openssl genrsa -out rootCA.key 2048
   ```
   
5. 执行以下命令，使用密钥对中的私有密钥生成 CA 证书。
   ```
   openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem
   ```
   系统提示您输入如下信息，所有参数可以自定义。
   - Country Name (2 letter code) \[AU\]：国家，如CN。
     
   
   - State or Province Name (full name) \[\]: 省份，如GD。
     
   
   - Locality Name (for example, city) \[\]:城市，如SZ。
     
   
   - Organization Name (for example, company) \[\]：组织，如Huawei。
     
   
   - Organizational Unit Name (for example, section) \[\]：组织单位，如IoT。
     
   
   - Common Name (e.g. server FQDN or YOUR name) \[\]: 名称，如zhangsan。
     
   
   - Email Address \[\]:邮箱地址，如1234567@163.com。
     
   
   
   在openssl安装目录的bin文件夹下，获取生成的CA证书（rootCA.pem）。
   
 
#### 上传验证证书
如果上传的是调测证书，上传后证书状态显示为"未验证"，您需要上传验证证书，来证明您拥有该CA证书。
图2CA证书-未验证证书   
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001981578397.png "点击放大")
验证证书是由CA证书对应的私钥创建的，请参考如下操作制作验证证书。
1. 执行如下命令为私有密钥验证证书生成密钥对。 
   ```
   openssl genrsa -out verificationCert.key 2048
   ```
   
   
2. 执行如下命令为私有密钥验证证书创建CSR（Certificate Signing Request）。 
   ```
   openssl req -new -key verificationCert.key -out verificationCert.csr
   ```
   系统提示您输入如下信息，**Common Name填写为验证证书的验证码**，其他参数自定义。
   - Country Name (2 letter code) \[AU\]：国家，如CN。
     
   
   - State or Province Name (full name) \[\]: 省份，如GD。
     
   
   - Locality Name (for example, city) \[\]:城市，如SZ。
     
   
   - Organization Name (for example, company) \[\]：组织，如Huawei。
     
   
   - Organizational Unit Name (for example, section) \[\]：组织单位，如IoT。
     
   
   - Common Name (e.g. server FQDN or YOUR name) \[\]：验证证书的验证码，请参考[步骤5]获取 。
     
   
   - Email Address \[\]:邮箱地址，如1234567@163.com。
     
   
   - Password\[\]：密码，如1234321。
   
   - Optional Company Name\[\]：公司名称，如Huawei。
   
   
   
   
3. 执行以下命令使用CSR创建私有密钥验证证书。 
   ```
   openssl x509 -req -in verificationCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out verificationCert.pem -days 500 -sha256
   ```
   在openssl安装目录的bin文件夹下，获取生成的验证证书（verificationCert.pem）。
   
   
4. 选择对应证书，单击![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002338968041.png)然后单击"上传验证证书"。
   
   图3CA证书-验证证书   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002480225392.png "点击放大")
   
   
5. 在弹出的对话框中已显示验证码，只需单击"添加文件"，上传验证证书后单击"确定"，上传后证书状态变为"已验证"，表明您拥有该CA证书。
   
   图4CA证书-上传验证证书   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002480387530.png "点击放大")
   
   
#### 删除CA证书
针对不再使用的CA证书，您可以单击右侧的"删除"按钮进行删除。
![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
删除服务CA证书后，使用此证书进行鉴权的设备将无法接入平台，在删除前请确保已经完成了备份，并谨慎操作。
图5CA证书-删除证书   
![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002480236122.png "点击放大")
#### 预置X.509证书
在注册X.509设备之前，您需要在设备侧预置CA机构签发的X.509证书。
![](https://support.huaweicloud.com/devg-iothub/public_sys-resources/note_3.0-zh-cn.png)
X.509证书由CA机构签发，若没有CA机构签发的商用证书，您可以自己[制作X.509调测证书]。如果已购买相关证书，或者权威机构签发的证书（pem、jks等），可直接上传到平台。
**制作X.509调测证书**
1. 以管理员身份运行cmd命令行窗口，执行cd c:\\openssl\\bin（请替换为openssl实际安装路径），进入openssl命令视图。
2. 执行如下命令生成密钥对。
   ```
   openssl genrsa -out deviceCert.key 2048
   ```
   
3. 执行如下命令为设备证书创建CSR（Certificate Signing Request）。
   ```
   openssl req -new -key deviceCert.key -out deviceCert.csr
   ```
   系统提示您输入如下信息，所有参数可以自定义。
   - Country Name (2 letter code) \[AU\]：国家，如CN。
     
   
   - State or Province Name (full name) \[\]: 省份，如GD。
     
   
   - Locality Name (for example, city) \[\]:城市，如SZ。
     
   
   - Organization Name (for example, company) \[\]：组织，如Huawei。
     
   
   - Organizational Unit Name (for example, section) \[\]：组织单位，如IoT。
     
   
   - Common Name (e.g. server FQDN or YOUR name) \[\]: 名称，如zhangsan。
     
   
   - Email Address \[\]:邮箱地址，如1234567@163.com。
     
   
   - Password\[\]：密码，如1234321。
   
   - Optional Company Name\[\]：公司名称，如Huawei。
    
4. 执行以下命令使用CSR创建设备证书。
   ```
   openssl x509 -req -in deviceCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out deviceCert.pem -days 500 -sha256
   ```
   在openssl安装目录的bin文件夹下，获取生成的设备证书（deviceCert.pem）。
   
#### 注册X.509证书认证的设备
1. 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
2. 在左侧导航栏选择"设备 \> 所有设备"，单击"注册设备"，按照如下表格填写参数后，单击"确定"。 
   图6设备-注册X.509设备   
   ![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000001981327481.png "点击放大")
   表1注册X.509设备 
   | 参数名称   | 说明                                                                                                                                                                                                                                                                                      |
   |:---|:---|
   | 所属资源空间 | 选择设备所属的资源空间。                                                                                                                                                                                                                                                                            |
   | 所属产品   | 选择设备所属的产品。 只有在[这里](https://support.huaweicloud.com/devg-iothub/iot_01_0053.html)创建了产品，此处才可以选择具体的产品。如没有，请先创建产品。                                                                                                                           |
   | 设备标识码  | 即node_id，填写为设备的IMEI、MAC地址或Serial No；若没有真实设备，填写自定义字符串，由英文字母、数字、连接号-和下划线_组成。                                                                                                                                                                                                              |
   | 设备ID   | 设备ID，用于唯一标识一个设备。如果携带该参数，平台将设备ID设置为该参数值；如果不携带该参数，设备ID由物联网平台分配获得，生成规则为product_id + _ + node_id拼接而成。                                                                                                                                                                                       |
   | 设备名称   | 即device_name，可自定义。                                                                                                                                                                                                                                                                      |
   | 设备描述   | 设备的描述信息，可自定义。                                                                                                                                                                                                                                                                           |
   | 设备认证类型 | X.509证书：设备使用X.509证书验证身份。                                                                                                                                                                                                                                                                |
   | 指纹     | 当"设备认证类型"选择"X.509证书"时填写，导入[设备侧预置的设备证书]对应的指纹，在OpenSSL执行**openssl x509 -fingerprint -sha256 -in deviceCert.pe** **m** 命令可查询。**注：填写时需要删除冒号** 。![](https://support.huaweicloud.com/devg-iothub/figure/zh-cn_image_0000002305248538.png "点击放大") |
      
   
   
 
#### 相关API参考
- [获取CA证书列表](https://support.huaweicloud.com/api-iothub/iot_06_v5_0099.html)
- [上传CA证书](https://support.huaweicloud.com/api-iothub/iot_06_v5_0014.html)
- [删除CA证书](https://support.huaweicloud.com/api-iothub/iot_06_v5_0022.html)
- [验证CA证书](https://support.huaweicloud.com/api-iothub/iot_06_v5_0016.html)
 
