
# 证书概述
在弹性负载均衡服务配置单向认证或双向认证时，您需要为HTTPS或TLS监听器配置证书。弹性负载均衡证书管理控制台支持获取您在华为云云证书与管理服务中统一管理的SSL服务器证书，也支持您上传您本地拥有的证书。
#### 证书使用场景
当您为弹性负载均衡添加HTTPS或TLS监听器来转发业务请求时，您需要选择SSL解析认证方式。单向认证需要为监听器配置服务器证书，双向认证需要同时配置服务器证书和CA证书。
表1SSL解析方式 
|   单向认证   |                          仅客户端对服务器端进行认证，您需要为监听器绑定服务器证书，用于验证服务器身份。                           |
|---|---|
| **双向认证** | 弹性负载均衡实例与客户端互相提供身份认证，从而允许通过认证的用户访问实例。您需要为监听器绑定服务器证书和CA证书，分别用于验证服务器和客户端的身份，后端服务器无需额外配置双向认证。 |
   
弹性负载均衡支持创建三种类型的证书，服务器证书、CA证书、服务器SM双证书。
表2证书类型 
|    服务器证书     |                                                                                                                                                                                                                                                         在使用HTTPS或TLS协议时，服务器证书用于SSL握手协商过程验证服务器的身份，需提供证书内容和私钥。                                                                                                                                                                                                                                                         |
|---|---|
| **CA证书**     | 又称客户端CA公钥证书，用于验证客户端证书签发机构的身份。在配置双向认证功能时，只有当客户端能够出具指定CA签发的证书时，才能成功建立连接。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **服务器SM双证书** | 在使用HTTPS协议时，若采用商密SSL协议，需提供双证书。双证书包括**签名证书** 和**加密证书**，需成套使用。 - **签名证书：**在签名时使用，仅用于验证身份使用，其公钥和私钥均由服务器自己产生，并由服务器自己保管，证书颁发机构（Certificate Authority，简称"CA"）不负责其保管任务。  - **加密证书：**在密钥协商时使用，其私钥和公钥均由CA产生，并由CA保管（存根）。   |
   
![](https://support.huaweicloud.com/usermanual-elb/public_sys-resources/note_3.0-zh-cn.png)
服务器SM双证书持续上线中，请以控制台实际为准。
#### 视频介绍
本视频介绍在ELB服务中如何管理证书。
<video controls="controls" preload="none" id="elb_ug_zs_0001_object434410818543" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/ELB/1732938073446813247.mp4" title="弹性负载均衡证书管理介绍" poster="https://support.huaweicloud.com/usermanual-elb/zh-cn_image_0000002409660601.jpg" style="width:100%;height:auto;max-width:600px"></video>
#### 使用证书的注意事项
- 同一个证书在负载均衡器上只需上传一次，可以使用在多个负载均衡器实例中。
- 如果创建的服务器证书用于SNI，则需要指定域名，且指定的域名必须与证书中的域名保持一致。一个证书可以指定多个域名。
- 默认情况下，一个监听器每种类型的证书只能绑定一个，但是一个证书可以被多个监听器绑定。如果监听器开启了SNI功能，则支持绑定多个服务器证书。
- 负载均衡器只支持原始证书，不支持对证书进行加密。
- 可以使用自签名的证书，使用自签名证书和第三方机构颁发的证书对负载均衡器无区别，但是使用自签名证书会存在安全隐患，建议客户使用权威机构颁发的证书。
- 负载均衡器只支持PEM格式的证书，其它格式的证书需要转换成PEM格式后，才能上传到负载均衡。
- ELB不会自动更新证书，如果您有证书过期了，需要手动更换或者删除证书。
 
#### 证书格式要求
在创建证书时，您可以直接输入证书内容或上传证书文件。
如果是通过根证书机构颁发的证书，您拿到的证书是唯一的一份，不需要额外的证书，配置的站点即可被浏览器等访问设备认为可信。
服务器证书、CA证书的"证书内容"格式均需按以下要求。
服务器SM双证书中的"SM签名证书内容"和"SM加密证书内容"格式均需按以下要求。
- 以"-----BEGIN CERTIFICATE-----"作为开头，"-----END CERTIFICATE-----"作为结尾。
- 每行64字符，最后一行不超过64字符。
- 证书之间不能有空行。
示例如下：
```
-----BEGIN CERTIFICATE-----
Base64–encoded certificate
-----END CERTIFICATE-----
```
#### 私钥格式要求
在创建服务器证书或服务器SM双证书时，您也需要上传证书的私钥。您可直接输入私钥文件内容或上传符合格式的私钥文件。
服务器SM双证书中的"SM签名证书私钥"和"SM加密证书私钥"格式均需按以下要求。
需注意必须是无密码的私钥，私钥内容格式为：
- 符合PEM格式，如下示例：
  - 以"-----BEGIN RSA PRIVATE KEY-----"作为开头，"-----END RSA PRIVATE KEY-----" 作为结尾。
  
  - 以"-----BEGIN EC PRIVATE KEY-----"作为开头，"-----END EC PRIVATE KEY-----" 作为结尾。
   
- 私钥之间不能有空行，并且每行64字符，最后一行不超过64字符。
示例如下：
```
-----BEGIN RSA PRIVATE KEY-----
[key]
-----END RSA PRIVATE KEY-----
```
#### 格式转换
弹性负载均衡仅支持PEM格式的证书，其它格式的证书需要转换成PEM格式后，才能上传到弹性负载均衡服务。以下是转换成PEM格式的几种常用办法。
#### DER转换为PEM
DER格式通常使用在Java平台。
运行以下命令进行证书转化：
```
openssl x509 -inform der -in certificate.cer -out certificate.pem
```
运行以下命令进行私钥转化：
```
openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem
```
#### P7B转换为PEM
P7B格式通常使用在Windows Server和Tomcat中。
运行以下命令进行证书转化：
```
openssl pkcs7 -print_certs -in incertificate.p7b -out outcertificate.cer
```
#### PFX转换为PEM
PFX格式通常使用在Windows Server中。
运行以下命令进行证书转化：
```
openssl pkcs12 -in certname.pfx -nokeys -out cert.pem
```
运行以下命令进行私钥转化：
```
openssl pkcs12 -in certname.pfx -nocerts -out key.pem -nodes
```
