
# 证书管理
本文以Windows环境为例，介绍通过Openssl工具制作CA证书，验证证书和设备的方法。以及更新与删除CA证书的操作。
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
以下"生成密钥对（rootCA.key）"和"生成CA证书（rootCA.crt）"为操作过程中需要使用到的两个文件。
 #### 制作CA证书
1. 在浏览器中访问[这里](https://slproweb.com/products/Win32OpenSSL.html)，下载并进行安装OpenSSL工具，安装完成后配置环境变量。
2. 在 D:\\certificates 文件夹下，以管理员身份运行cmd命令行窗口。
3. 生成密钥对（rootCA.key）： 
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   生成"密钥对"时输入的密码在生成"证书签名请求文件"、"CA证书"，"验证证书"以及"设备证书"时需要用到，请妥善保存。
   ```
   openssl genrsa -des3 -out rootCA.key 2048
   ```
   
   
4. 使用密钥对生成证书签名请求文件： 
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   生成证书签名请求文件时，要求填写证书唯一标识名称（Distinguished Name，DN）信息，参数说明如下[表1]所示。
    表1证书签名请求文件参数列表 
   | **提示**                                            | **参数名称**            | **取值样例**                      |
   |:---|:---|:---|
   | Country Name (2 letter code) \[\]:                | 国家/地区               | CN                            |
   | State or Province Name (full name) \[\]:          | 省/市                 | GuangDong                     |
   | Locality Name (eg, city) \[\]:                    | 城市                  | ShenZhen                      |
   | Organization Name (eg, company) \[\]:             | 组织机构（或公司名）          | Huawei Technologies Co., Ltd. |
   | Organizational Unit Name (eg, section) \[\]:      | 机构部门                | Cloud Dept.                   |
   | Common Name (eg, fully qualified host name) \[\]: | CA名称（CN）            | Huawei IoTDP CA               |
   | Email Address \[\]:                               | 邮箱地址                | /                             |
   | A challenge password \[\]:                        | 证书密码，如您不设置密码，可以直接回车 | /                             |
   | An optional company name \[\]:                    | 可选公司名称，如您不设置，可以直接回车 | /                             |
      
   ```
   openssl req -new -key rootCA.key -out rootCA.csr
   ```
   
   
5. 生成CA证书（rootCA.crt）： 
   ```
   openssl x509 -req -days 50000 -in rootCA.csr -signkey rootCA.key -out rootCA.crt
   ```
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   "-days"后的参数值指定了该证书的有效天数，此处示例为50000天，您可根据实际业务场景和需要进行调整。
   
   
 
#### 上传CA证书
1. 登录[设备发放控制台](https://console.huaweicloud.com/iotdm/?locale=zh-cn#/dm-portal/iotps/home)。
2. 在设备发放控制台，左侧导航窗格中，选择"证书"，单击左上方的"上传CA证书"。 
   图1上传CA证书   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001835989777.png "点击放大")
   
   
3. 在"上传CA证书"页面，填写"证书名称"，单击"添加文件"，上传此前"[制作CA证书]"步骤中生成的"CA证书（rootCA.crt文件）"，单击"确定"。
   
   图2上传CA证书详情页   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001789350320.png "点击放大")
   
   
 
![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
上传的CA证书初始状态为"未验证"，需要完成"[验证CA证书]"过程，方可正常使用该CA证书。
 #### 验证CA证书
1. 登录[设备发放控制台](https://console.huaweicloud.com/iotdm/?locale=zh-cn#/dm-portal/iotps/home)。
2. 在设备发放控制台，左侧导航窗格中，选择"证书"，单击"证书列表"条目的操作栏中的"验证证书"。 
   图3上传CA证书完成页   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001789190628.png "点击放大")
   
   
3. 在上传验证证书页面，单击"生成验证码"，单击"复制图标"复制此CA证书的随机验证码。 
   图4复制验证码   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002322657170.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   CA证书验证码有效期为一天，请及时使用验证码生成验证证书并完成验证。
   验证码的生成为替换机制，即对于一个CA证书，即使此前的验证码未过期，也将被新生成的验证码替换。
   
   
4. 使用OpenSSL工具为验证证书生成密钥对。 
   ```
   openssl genrsa -out verificationCert.key 2048
   ```
   
   
5. 利用此验证码生成证书签名请求文件CSR。 
   ```
   openssl req -new -key verificationCert.key -out verificationCert.csr
   ```
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   CSR文件的Common Name (e.g. server FQDN or YOUR name) 需要填写此验证码。
   
   
6. 使用CA证书、CA证书私钥和上一步骤中生成的CSR文件创建验证证书（verificationCert.crt）。 
   ```
   openssl x509 -req -in verificationCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out verificationCert.crt -days 36500 -sha256
   ```
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   生成验证证书用到的"rootCA.crt"和"rootCA.key"这两个文件，为"[制作CA证书]"中所生成的两个文件。
   "-days"后的参数值指定了该证书的有效天数，此处示例为36500天，您可根据实际业务场景和需要进行调整。
   
   
7. 上传验证证书进行验证。 
   图5上传验证证书   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002356657209.png "点击放大")
   
   
#### 签发设备证书
1. 使用OpenSSL工具为设备证书生成密钥对，即"设备证书（客户端证书）私钥"。 
   ```
   openssl genrsa -out deviceCert.key 2048
   ```
   
   
2. 使用密钥对生成证书签名请求文件： 
   ```
   openssl req -new -key deviceCert.key -out deviceCert.csr
   ```
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   生成证书签名请求文件时，要求填写证书唯一标识名称（Distinguished Name，DN）信息，参数说明如下[表1]所示。
    表2证书签名请求文件参数列表 
   | **提示**                                            | **参数名称**            | **取值样例**                      |
   |:---|:---|:---|
   | Country Name (2 letter code) \[\]:                | 国家/地区               | CN                            |
   | State or Province Name (full name) \[\]:          | 省/市                 | GuangDong                     |
   | Locality Name (eg, city) \[\]:                    | 城市                  | ShenZhen                      |
   | Organization Name (eg, company) \[\]:             | 组织机构（或公司名）          | Huawei Technologies Co., Ltd. |
   | Organizational Unit Name (eg, section) \[\]:      | 机构部门                | Cloud Dept.                   |
   | Common Name (eg, fully qualified host name) \[\]: | CA名称（CN）            | Huawei IoTDP CA               |
   | Email Address \[\]:                               | 邮箱地址                | /                             |
   | A challenge password \[\]:                        | 证书密码，如您不设置密码，可以直接回车 | /                             |
   | An optional company name \[\]:                    | 可选公司名称，如您不设置，可以直接回车 | /                             |
      
   
   
3. 使用CA证书、CA证书私钥和上一步骤中生成的CSR文件创建设备证书（deviceCert.crt）。 
   ```
   openssl x509 -req -in deviceCert.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out deviceCert.crt -days 36500 -sha256
   ```
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   生成设备证书用到的"rootCA.crt"和"rootCA.key"这两个文件，为"[制作CA证书]"中所生成的两个文件，且需要完成"[验证CA证书]"流程。
   "-days"后的参数值指定了该证书的有效天数，此处示例为36500天，您可根据实际业务场景和需要进行调整
   
   
 
#### 更新CA证书
1. 登录[设备发放控制台](https://console.huaweicloud.com/iotdm/?locale=zh-cn#/dm-portal/iotps/home)。
2. 在设备发放控制台，左侧导航窗格中，选择"证书"，单击"证书列表"条目的操作栏中的"更新"。 
   图6更新CA证书   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002026972252.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   更新CA证书前，要求该证书未被设备、策略、注册组关联。
   更新CA证书后，该证书状态将变为未验证，请重新完成验证CA证书过程。
   
   
 
#### 删除CA证书
1. 登录[设备发放控制台](https://console.huaweicloud.com/iotdm/?locale=zh-cn#/dm-portal/iotps/home)。
2. 在设备发放控制台，左侧导航窗格中，选择"证书"，单击"证书列表"条目的操作栏中的"删除"。 
   图7删除CA证书   
   ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002063021621.png "点击放大")
   ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
   关联了至少一个设备、策略或注册组的CA证书，不允许删除。
   请谨慎操作，删除后的CA证书的所有数据将被删除且不可恢复。
   
   
 
