文档中心>实践教程>负载均衡>部署证书到负载均衡(双向认证)

部署证书到负载均衡(双向认证)

最近更新时间:2025-05-07 15:54:43

我的收藏

操作场景

在传统的单向认证里,客户端仅验证服务器的身份,对于一些安全性要求较高的场景,单向认证无法满足安全需。双向认证则要求客户端和服务器双方都验证对方身份,这增强了通信的安全性,能有效防止中间人攻击、身份伪造和数据泄露。关于单向认证与双向认证的说明您可以参考 单向认证和双向认证说明

前提条件

1. 您已经创建负载均衡 CLB 实例,具体操作请参考 创建负载均衡实例
2. 如需域名访问,请确认您拥有域名并配置负载均衡转发域名,具体操作请参考 配置负载均衡的转发域名
3. 您已创建2台 CVM 实例 rs-1与 rs-2,作为 CLB 实例的后端服务器,具体操作请参考 后端服务器

配置步骤

下面以自签证书为例,具体流程如图所示,介绍如何配置 HTTPS 双向认证负载均衡。

1. CA 证书:即证书颁发机构证书,您可以用于签发服务器证书或客户端证书。
2. 服务器证书:您可以通过购买或自签方式获取服务器证书,证书购买流程请参考 申请证书
3. 客户端证书:您可以使用所获取的 CA 证书签发客户端证书。
4. 上传证书:您需要上传 CA 证书到证书平台,并上传所购买或自签的服务器证书。
5. 负载均衡配置:您在配置 HTTPS 监听器时应开启双向认证,服务器证书选择所上传的证书,CA 证书选择自签根证书。
6. 导入客户端证书:您需要在客户端导入请求时所使用的客户端证书。

步骤1:获取 CA 证书

1. 执行以下命令, 创建 CA 证书的私钥文件 ca.key。
# 生成 CA 私钥
openssl genrsa -out ca.key 2048
2. 执行以下命令, 创建 CA 证书的请求文件 ca.csr。
# 生成 CA 证书请求文件
openssl req -new -key ca.key -out ca.csr
注意:
请自行填写以下参数,并保证其 Common Name 与服务器证书或者客户端证书的 Common Name 不相同。

3. 执行以下命令, 创建自签名的 CA 证书 ca.crt。
# 自签名生成 CA 证书,有效期为 3650 天
openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key -days 3650
运行成功如下图:


步骤2:获取服务器证书

1. 执行以下命令, 创建服务器证书的私钥文件 server.key。
# 生成服务器私钥
openssl genrsa -out server.key 2048
2. 执行以下命令, 创建服务器证书的请求文件 server.csr。
# 生成服务器证书请求文件
openssl req -new -key server.key -out server.csr
3. 执行以下命令, 使用 CA 证书签发服务器证书 server.crt。
# 使用 CA 证书签名生成服务器证书,有效期为 365 天
openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650

步骤3:获取客户端证书

1. 执行以下命令, 创建客户端证书的私钥文件 client.key。
# 生成客户端私钥
openssl genrsa -out client.key 2048
2. 执行以下命令, 创建客户端证书的请求文件 client.csr。
# 生成客户端证书请求文件
openssl req -new -key client.key -out client.csr
3. 执行以下命令, 使用 CA 证书签发客户端证书 client.crt。
# 使用 CA 证书签名生成客户端证书,有效期为 365 天
openssl x509 -req -in client.csr -out client.crt -CA ca.crt -CAkey ca.key -CAcreateserial -days 3650
4. 执行以下命令,将所生成客户端证书 client.crt 转换为浏览器可识别到 p12格式文件。
# 客户端证书格式转换
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

步骤4:上传 CA 证书

2. 单击证书管理 ,再单击新建

3. 在上传证书页面,证书类型选择 CA 证书,把 步骤1 创建的 CA 证书 ca.crt 的内容复制到签名证书区域,单击确定
注意:
复制内容时请将最后的换行符删除,避免报错。


步骤5:上传服务器证书

2. 单击证书管理 ,再单击新建
3. 在上传证书页面,证书类型选择服务器证书,把 步骤2 生成的服务器证书 server.crt 和服务器私钥 server.key 的内容复制到签名证书区域,单击确定


步骤6:配置 HTTPS 双向认证监听

方式一:不启用 SNI

1. 登录 负载均衡控制台;在实例页面,找到目标 CLB 实例,单击实例 ID;在监听器管理页,单击新建

2. 在配置界面,监听协议选择 HTTPS,并填写指定端口;不启用 SNI 选择双向认证方式;并上传已获取服务器证书与 CA 证书;确认配置信息,然后单击提交

3. 点击加号创建转发规则填写负载均衡器域名及URL路径选择均衡方式与后端协议完成基本配置。

说明:
当选用 HTTPS 监听协议时,客户端到负载均衡访问使用 HTTPS;而负载均衡到后端服务器之间转发协议,可选择 HTTP 或 HTTPS。
4. 配置健康检查端口,并根据选择配置会话保持。

5. 展开规则,单击绑定,选择所创建的两个后端 rs-1、rs-2。


方式二:启用 SNI

1. 在配置界面,监听协议选择 HTTPS,并填写指定端口;启用 SNI 然后单击提交

2. 点击加号创建转发规则,填写负载均衡器域名及 URL 路径,选择均衡方式与后端协议完成基本配置;填写该域名所对应的服务器证书以及自签的 CA 证书。

3. 后续步骤与 不启用SNI 配置方式相同,SNI 具体说明您可参考 CLB 支持 SNI 多域名证书

步骤7:导入客户端证书

方式一:浏览器方式

1. 将所签发的客户端证书 client.p12下载导入本地。
2. 双击客户端证书,根据证书导入向导完成客户端证书安装。

方式二:命令行方式

1. 把客户端证书 client.crt 和客户端私钥文件 client.key 拷贝到新目录。
2. 使用指定目录的客户端文件运行命令行验证。

步骤8:验证双向认证

方式一:浏览器方式

1. 在浏览器输入负载均衡绑定域名,未绑定域名可访问 IP 端口,访问时请选择已导入客户端证书。

2. 可刷新浏览器,观察到客户端的请求在 rs-1和 rs-2服务器之间的转换,说明验证成功。



方式二:命令行方式

1. 在 shell 界面,输入以下命令,并确认证书地址和密钥地址,以及所访问的负载均衡器地址。
curl --cert client.crt --key client.key --cacert ca.crt https://xxx.xxx.xxx
2. 输出对应正确响应码,说明验证成功。