
# 为API添加SSL证书
如果API分组中的API支持HTTPS请求协议，则在绑定独立域名后，还需为独立域名添加SSL证书。SSL证书是进行数据传输加密和身份证明的证书，支持单向认证和双向认证两种认证方式。
**如果不配置SSL证书，将无法保障请求的链路安全，请谨慎配置。**
- 单向认证：客户端与服务端连接时，客户端需要验证所连接的服务端是否正确。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000002549245889.png "点击放大")
  
  
- 双向认证：客户端与服务端连接时，除了客户端需要验证所连接的服务器是否正确之外，服务端也需要验证接入的客户端是否正确。 ![](https://support.huaweicloud.com/usermanual-roma/zh-cn_image_0000002549245893.png "点击放大")
  
  
#### 约束与限制
- 仅支持添加pem编码格式的SSL证书。
- 添加的SSL证书仅支持RSA、ECDSA和DSA加密算法。
- 不支持使用证书链。
 
#### 前提条件
- 已获取SSL证书。
- 使用双向认证时，需要获取CA证书。
 
 #### 创建SSL证书
1. 登录[ROMA Connect控制台](https://console.huaweicloud.com/roma3)，在左侧导航栏选择"资源管理"，在实例页面单击实例，进入实例控制台。
2. 在左侧的导航栏选择"服务集成 APIC \> API策略"，在"SSL证书管理"页签下单击"创建SSL证书"。
3. 在创建SSL证书弹窗中配置证书信息。
   表1SSL证书配置 
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                             |
   |:---|:---|
   | 证书名称 | 填写SSL证书的名称，根据规划自定义。建议您按照一定的命名规则填写SSL证书名称，方便您快速识别和查找。 支持中文、英文字母、数字、英文格式的下划线，必须以英文或中文开头，4\~50个字符。                                                                                                                                                                                                                                                                 |
   | 可见范围 | 选择SSL证书的可见范围。 - 当前实例：SSL证书仅当前实例可见。  - 全局：SSL证书在当前账号下的所有实例可见。                                                                                                                                                    |
   | 算法类型 | 选择证书所使用的加密算法类型，可选择RSA和ECC。 - RSA：目前在全球应用广泛的非对称加密算法，兼容性在三种算法中最好，支持主流浏览器和全平台操作系统。一般采用2048位或3072位的加密长度。  - ECC：椭圆曲线加密算法。相比于RSA，ECC加密速度快、效率更高、服务器资源消耗低，目前已在主流浏览器中得到推广，成为新一代主流算法。一般采用256位加密长度。   |
   | 证书内容 | 填写pem编码格式的SSL证书内容。 以文本方式打开待添加证书里的PEM格式证书文件（后缀名为".pem"），将证书内容复制到"证书内容"中即可。 若证书为非pem编码格式，可参考[转换证书为PEM格式]进行证书格式转换。                                                                                                                                                                                 |
   | 密钥   | 填写pem编码格式的SSL证书密钥。 以文本方式打开待上传证书里的KEY格式或PEM格式的私钥文件（后缀名为".pem"或".key"），将私钥复制到"密钥"中即可。                                                                                                                                                                                                                                                                             |
   | CA   | 当使用双向认证时，需要填写CA证书，用来校验客户端证书。配置CA证书后，还需要在独立域名中[绑定SSL证书](https://support.huaweicloud.com/usermanual-roma/roma_03_2109.html#roma_03_2109__section251033014164)来开启双向认证。 以文本方式打开待上传证书里的CA证书文件（后缀名为".pem"），将内容复制到"CA"中即可。 若证书为非pem编码格式，可参考[转换证书为PEM格式]进行证书格式转换。                                    |
      
   
4. 单击"确定"，完成SSL证书的添加。
   ![](https://support.huaweicloud.com/usermanual-roma/public_sys-resources/note_3.0-zh-cn.png)
   证书过期后建议您及时替换，减少安全风险。
   
5. 证书创建完成后，进入API分组页面为独立域名[绑定SSL证书（可选）](https://support.huaweicloud.com/usermanual-roma/roma_03_2109.html#roma_03_2109__section251033014164)。
   如果需要修改证书，进入证书列表页面[更新SSL证书]即可。
   
 
 #### 转换证书为PEM格式
| 格式类型    | 转换方式（通过[OpenSSL](https://www.openssl.org/)工具进行转换）                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| CER/CRT | 将"cert.crt"证书文件直接重命名为"cert.pem"。                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| PFX     | - 提取私钥命令，以"cert.pfx"转换为"key.pem"为例。 openssl pkcs12 -in cert.pfx -nocerts -out key.pem   - 提取证书命令，以"cert.pfx"转换为"cert.pem"为例。 openssl pkcs12 -in cert.pfx -nokeys -out cert.pem                                                 |
| P7B     | 1. 证书转换，以"cert.p7b"转换为"cert.cer"为例。 openssl pkcs7 -print_certs -in cert.p7b -out cert.cer   2. 将"cert.cer"证书文件直接重命名为"cert.pem"。                                                                                                                                                       |
| DER     | - 提取私钥命令，以"privatekey.der"转换为"privatekey.pem"为例。 openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem   - 提取证书命令，以"cert.cer"转换为"cert.pem"为例。 openssl x509 -inform der -in cert.cer -out cert.pem    |
   
 #### 更新SSL证书
进入证书列表页面，找到待更新证书，在"操作"列单击"编辑"，修改证书信息即可。
- 更新SSL证书不影响API的调用。
- 如果待更新证书已绑定独立域名，那么所有访问这个域名的客户端都会看到更新后的证书。
- 如果更新的SSL证书已绑定独立域名且更新的内容新增CA证书，那么独立域名侧默认关闭"支持客户端认证"即关闭HTTPS双向认证；如果更新的SSL证书已绑定独立域名且更新的内容无CA证书，那么独立域名侧默认关闭"支持客户端认证"即未开启HTTPS双向认证。
 
