当您在处理一些关键业务时,HTTPS双向认证通过对通信双方做认证,为您的业务提供更高的安全性。本文指导您如何使用ALB部署HTTPS双向认证。
背景信息
- HTTPS单向认证:客户端需要认证服务器端,而服务器端不需要认证客户端。客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。
- HTTPS双向认证:客户端需要从服务器端下载服务器的公钥证书进行验证,同时还需要把客户端的公钥证书上传到服务器端进行验证,双方都通过认证,才能建立安全通信通道进行数据传输。因此双向认证可以为业务提供更高的安全性。
使用限制
仅标准版和WAF增强版的ALB实例支持双向认证,基础版ALB实例不支持双向认证。
前提条件
- 您已创建了标准版或WAF增强版的ALB实例。具体操作,请参见创建应用型负载均衡。说明 基础版的ALB实例不支持双向认证。
- 您已创建了ECS01和ECS02,并在ECS01和ECS02中部署了2个不同的Nginx服务。具体操作,请参见使用向导创建实例和手动部署LNMP环境(Alibaba Cloud Linux 2)。
- 您已创建了后端服务器组RS,并添加了ECS01和ECS02作为后端服务器。具体操作,请参见创建和管理服务器组。
- 您已在ECS01中通过OpenSSL官网下载并安装OpenSSL工具(1.1.1及以上版本)。
- 您已在证书中心购买或上传服务器证书。具体操作,请参见购买SSL证书和上传SSL证书。
- 您已在证书中心购买并启用子CA证书,且私有子CA的证书剩余数量不为0;或已上传自签名根CA或自签名子根CA证书至证书中心。具体操作,请参见购买及启用私有CA和上传三方私有证书。
配置步骤

说明 服务端需要完成购买服务器证书的操作,客户端(用户)需要完成准备客户端证书、导出客户端证书、安装客户端证书的操作。
步骤一:购买服务器证书
您可以从阿里云数字证书管理服务控制台购买、上传服务器证书或者在其他服务商处购买服务器证书。您可以通过浏览器检查服务器发送的证书是否是由自己信赖的中心签发的。
步骤二:准备客户端证书
本文为您介绍两种获取CA证书的方式。您可以通过证书中心购买CA证书并申请客户端证书,也可以上传自签CA证书至证书中心。
方式一:购买客户端证书
- 登录数字证书管理服务控制台。
- 在左侧导航栏,单击私有证书。
- 在私有证书页面,单击私有CA页签,找到目标根CA证书。
- 单击目标根CA证书前的
图标,找到目标私有子CA,在操作列单击申请证书。
- 在申请证书面板,完成以下证书信息配置,然后单击确认申请。此处仅列出和本文强相关的配置项。关于申请证书的更多操作,请参见管理私有证书。
参数 说明 证书类型 选择私有证书的证书类型。本文选择客户端证书。 公用名(CN) 私有证书主体的通用名称。客户端证书支持填写用户邮箱地址或URL。 本文填写已创建的ALB实例的域名。
有效期限 私有证书的有效期。该有效期不能超过您购买的PCA服务的时长。 本文默认显示30天。
提交证书申请后,证书会立即签发。您可以在目标私有CA操作列单击证书列表,在证书列表页面查看已签发的证书信息。
方式二:上传自签CA证书
- 远程登录ECS01,执行以下命令,生成自签名根CA证书。ALB支持自签名根CA或自签名子根CA证书进行双向认证,本文以自签名根CA证书为例为您介绍。
- 在本地打开命令行窗口,执行以下命令导出步骤1生成的根CA证书文件至本地文件夹。本文以Windows客户端为例。
根据提示输入生成根CA证书的服务器的密码。scp root@IPaddress:/root/ca/root.crt /C:/Users/test //IPaddress是生成根CA证书的服务器的IP地址 scp root@IPaddress:/root/ca/root.key /C:/Users/test //IPaddress是生成根CA证书的服务器的IP地址
- 登录数字证书管理服务控制台。
- 在左侧导航栏,单击证书应用仓库。
- 在证书应用仓库页面,单击创建仓库。
- 在创建仓库面板,配置以下参数,然后单击确定。
配置项 说明 仓库名称 自定义仓库名称。 数据来源 本文选择上传证书,表示对通过第三方证书服务商购买并签发的私有证书进行管理。 - 在证书应用仓库页面,单击目标证书仓库。
- 在证书管理页面,单击上传证书。
- 在CA信息面板,参考下表配置,单击确认并启用。
步骤三:导出客户端证书
方式一:导出通过控制台购买的客户端证书
如果您已通过控制台购买了客户端证书,并需要通过该客户端证书进行双向认证,请执行以下操作导出客户端证书。
- 登录数字证书管理服务控制台。
- 在左侧导航栏,单击私有证书。
- 在私有证书页面,单击私有CA页签,找到目标根CA证书。
- 单击目标根CA证书前的
图标,找到目标子CA证书,在操作列单击证书列表。
- 在证书列表页面,找到目标客户端证书,在操作列单击详情,然后在证书详情面板,选中查看私钥内容。
- 在请输入密码文本框中,设置私钥加密密码,并单击导出。导出成功后,证书详情面板下方会显示该私有证书的证书内容、证书链内容、私钥内容。说明 在导出证书的过程中,您输入的私钥加密密码会被用于加密证书私钥,后续安装私有证书时,需要您使用此处设置的密码对私钥解密,请保存好此密码。
- 在本地新建2个TXT文件,分别将证书内容、私钥内容复制粘贴进去,并将证书内容的文件保存为
.crt
格式,将私钥内容的文件保存为.key
格式。重命名客户端证书为client.crt
,客户端私钥为client.key
。 - 将客户端证书转换为浏览器可以识别的PKCS12文件。
- 执行以下命令查看生成的客户端证书。
cd /root/ca/users ls
运行结果如下图所示: - 在本地打开命令行窗口,执行以下命令导出步骤三中生成的客户端证书。
根据提示输入生成根CA证书的服务器的密码。scp root@IPaddress:/root/ca/users/client.p12 ./ //IPaddress是生成客户端证书的服务器的IP地址
方式二:导出通过自签证书生成的客户端证书
如果您已上传自签CA证书至证书中心,并需要自签CA证书生成的客户端证书进行双向认证,请执行以下操作生成客户端证书。
- 远程登录ECS01,执行以下步骤,生成客户端证书。具体操作,请参见ECS远程连接操作指南。
- 在本地打开命令行窗口,执行以下命令导出步骤1生成的根CA证书文件至本地文件夹。本文以Windows客户端为例。
根据提示输入生成根CA证书的服务器的密码。scp root@IPaddress:/root/ca/client.p12 /C:/Users/test //IPaddress是生成根CA证书的服务器的IP地址
步骤四:安装客户端证书
将生成的客户端证书安装到客户端。本文以Microsoft Edge浏览器为例。
步骤五:配置HTTPS双向认证监听
- 登录应用型负载均衡ALB控制台。
- 在顶部菜单栏,选择ALB实例所属的地域。本文选择华东1(杭州)。
- 在实例页面,找到目标ALB实例,单击实例ID。
- 在监听页签,单击创建监听,完成以下配置,然后单击下一步。此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。更多信息,请参见添加HTTPS监听。
参数 说明 选择负载均衡协议 选择监听的协议类型。 本文选择HTTPS。
监听端口 输入用来接收请求并向后端服务器进行请求转发的监听端口,本文输入443。 通常HTTP协议使用80端口,HTTPS协议使用443端口。
监听名称 输入自定义监听名称。 高级配置 单击修改展开高级配置。 说明 本文保持默认配置。启用HTTP 2.0 选择是否开启HTTP 2.0。本文保持默认值,即开启HTTP 2.0。 - 在配置SSL证书配置向导,选择步骤一购买的服务器证书。
- 单击修改展开高级配置,开启高级配置中的启用双向认证。
- 选择CA证书来源为阿里云签发,在选择默认CA证书下拉框中选择步骤二:准备客户端证书购买的CA证书。
如果没有可选的CA证书,您可以在下拉框中单击购买CA证书创建新证书。更多信息,请参见购买及启用私有CA。
- 选择CA证书来源为非阿里云签发,在选择默认CA证书下拉框中选择步骤二:准备客户端证书上传的自签CA证书。
如果没有可选的自签名CA证书,您可以在下拉框中单击上传自签CA证书,在证书仓库页面,创建数据来源为上传证书的仓库,然后通过证书应用仓库上传自签名根CA或自签名子根CA证书。更多信息,请参见上传三方私有证书。
- 选择CA证书来源为阿里云签发,在选择默认CA证书下拉框中选择步骤二:准备客户端证书购买的CA证书。
- 单击修改展开高级配置,然后打开启用双向认证的开关,并根据需要选择证书来源。
- 选择TLS安全策略,然后单击下一步。
- 在选择服务器组配置向导,选择服务器类型及服务器类型下的后端服务器组RS,查看后端服务器ECS01和ECS02的信息,然后单击下一步。
- 在配置审核配置向导,确认配置信息,然后单击提交。
步骤六:配置域名解析
将步骤一中购买的服务器证书的域名通过CNAME域名解析的方式解析到ALB实例的公网服务域名上。- 登录应用型负载均衡ALB控制台。
- 在顶部菜单栏,选择ALB实例所属的地域。本文选择华东1(杭州)。
- 选择已创建的标准版的ALB实例,复制其对应的DNS名称。
- 完成以下步骤添加CNAME解析记录。
步骤七:测试HTTPS双向认证
- 登录应用型负载均衡ALB控制台。
- 在顶部菜单栏,选择ALB实例所属的地域。本文选择华东1(杭州)。
- 在实例页面,单击目标实例ID,然后单击监听页签,查看健康检查状态。当健康检查状态列为正常时,表示后端服务器可以正常接收处理ALB的HTTPS监听转发的请求。
- 在浏览器中,输入服务器证书绑定的域名,在弹出的对话框中选中用于验证客户端身份的证书,单击确定。
- 刷新浏览器,您可以观察到客户端的请求在ECS01和ECS02服务器之间的转换。