当您在处理一些关键业务时,HTTPS双向认证通过对通信双方做双向认证,为您的业务提供更高的安全性。本文指导您如何使用ALB部署HTTPS双向认证。

背景信息

  • HTTPS单向认证:客户端需要认证服务器端,而服务器端不需要认证客户端。客户端从服务器端下载服务器端公钥证书进行验证,然后建立安全通信通道。
  • HTTPS双向认证:客户端需要从服务器端下载服务器的公钥证书进行验证,同时还需要把客户端的公钥证书上传到服务器端进行验证,双方都通过认证,才能建立安全通信通道进行数据传输。因此双向认证可以为业务提供更高的安全性。

前提条件

配置步骤

配置步骤

步骤一:购买服务器证书

您可以通过浏览器检查服务器发送的证书是否是由自己信赖的中心签发的。您可以从阿里云数字证书管理服务控制台购买服务器证书或者向其他服务商处购买。

本文以从阿里云数字证书管理服务控制台购买服务器证书为例。关于如何购买服务器证书,请参见购买SSL证书
说明 购买SSL证书时需要绑定域名,请确保您拥有真实可用的域名。

步骤二:购买客户端证书

本文以从阿里云数字证书管理服务控制台购买的客户端服证书为例进行配置,更多操作,请参见管理证书

  1. 登录数字证书管理服务控制台
  2. 在左侧导航栏,单击私有证书
  3. 私有证书页面,单击私有CA页签,找到目标根CA证书。
  4. 单击目标根CA证书前的icon图标,找到目标私有子CA,在操作列单击申请证书
  5. 申请证书面板,完成以下证书信息配置,然后单击确认申请
    此处仅列出和本文强相关的配置项。关于申请证书的更多操作,请参见申请私有证书
    参数 说明
    证书类型 选择私有证书的证书类型。本文选择客户端证书
    公用名(CN) 私有证书主体的通用名称。客户端证书支持填写用户邮箱地址或URL。

    本文填写已创建的ALB实例的域名。

    有效期限 私有证书的有效期。该有效期不能超过您购买的PCA服务的时长。

    本文默认显示30天。

    提交证书申请后,证书会立即签发。您可以在目标私有CA操作列单击证书列表,在证书列表页面查看已签发的证书信息。

步骤三:导出客户端证书

  1. 在左侧导航栏,单击私有证书
  2. 私有证书页面,单击私有CA页签,找到目标根CA证书。
  3. 单击目标根CA证书前的icon图标,找到目标子CA证书,在操作列单击证书列表
  4. 证书列表页面,找到目标客户端证书,在操作列单击详情
  5. 证书详情面板,选中查看私钥内容
  6. 请输入密码文本框中,设置私钥加密密码,并单击导出
    导出成功后,证书详情面板下方会显示该私有证书的证书内容、证书链内容、私钥内容。
    说明 在导出证书的过程中,您输入的私钥加密密码会被用于加密证书私钥,后续安装私有证书时,需要您使用此处设置的密码对私钥解密,请保存好此密码。
  7. 新建2个TXT文件,分别将证书内容、私钥内容复制粘贴进去,并将证书内容的文件保存为.crt格式,将私钥内容的文件保存为.key格式。重命名客户端证书为client.crt,客户端私钥为client.key
  8. 将客户端证书转换为浏览器可以识别的PKCS12文件。
    1. 远程登录ECS01,具体操作,请参见ECS远程连接操作指南
    2. 执行以下命令创建一个存放客户端证书的文件目录。
      mkdir -p /root/ca/users
    3. 步骤7生成的客户端证书client.crt和私钥client.key上传到users目录下。
    4. 执行以下命令将客户端证书转化为PKCS12文件。
      openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12
    5. 按照提示输入步骤6设置的客户端私钥加密密码。
    6. 输入用于导出证书的密码。此密码为客户端证书的保护密码,在安装客户端证书时需要输入该密码。
      运行结果如下图所示:P12
  9. 执行以下命令查看生成的客户端证书。
    cd /root/ca/users
    ls
    运行结果如下图所示:客户端证书

步骤四:安装客户端证书

将生成的客户端证书安装到客户端。本教程以Windows客户端,Microsoft Edge浏览器为例。

  1. 打开命令行窗口,执行以下命令导出步骤三中生成的客户端证书。
    scp root@IPaddress:/root/ca/users/client.p12 ./          //IPaddress是生成客户端证书的服务器的IP地址
  2. 在Microsoft Edge浏览器中导入下载的客户端证书。
    1. 打开Microsoft Edge浏览器,选择... > 设置
    2. 在左侧导航栏,单击隐私、搜索和服务页签,然后找到单击管理证书,导入下载的客户端证书。在导入证书时需要输入步骤8导出证书的密码。安装证书

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

  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏,选择ALB实例所属的地域。本文选择华东1(杭州)。
  3. 实例页面,找到目标ALB实例,单击实例ID。
  4. 监听页签,单击创建监听,完成以下配置,然后单击下一步
    此处仅列出和本文强相关的配置项,其他未列出的配置项使用默认值。更多信息,请参见添加HTTPS监听
    参数 说明
    选择负载均衡协议 选择监听的协议类型。

    本文选择HTTPS

    监听端口 输入用来接收请求并向后端服务器进行请求转发的监听端口,本文输入443

    通常HTTP协议使用80端口,HTTPS协议使用443端口。

    监听名称 输入自定义监听名称。
    高级配置 单击修改展开高级配置。
    启用HTTP 2.0 选择是否开启HTTP 2.0。本文默认开启HTTP 2.0。
  5. 配置SSL证书配置向导,选择步骤一购买的服务器证书。
  6. 单击修改展开高级配置,然后打开启用双向认证的开关,选择步骤二购买的子CA证书。
  7. 选择TLS安全策略,然后单击下一步
  8. 选择服务器组配置向导,选择服务器类型服务器类型下的后端服务器组RS,查看后端服务器ECS01和ECS02的信息,然后单击下一步
  9. 配置审核配置向导,确认配置信息,然后单击提交

步骤六:配置域名解析

将在步骤一中购买的服务器证书的域名通过CNAME域名解析的方式解析到ALB实例的公网服务域名上。
  1. 登录应用型负载均衡ALB控制台
  2. 在顶部菜单栏,选择ALB实例所属的地域。本文选择华东1(杭州)。
  3. 选择已创建的标准版的ALB实例,复制其对应的DNS名称。
  4. 完成以下步骤来添加CNAME解析记录。
    1. 登录域名解析控制台
    2. 域名解析页面单击添加域名
    3. 添加域名对话框中输入您的域名,然后单击确定
      注意
      • 这里添加的域名为服务器证书绑定的域名。
      • 您的域名需已完成TXT记录验证。
    4. 在目标域名的操作列单击解析设置
    5. 解析设置页面单击添加记录
    6. 添加记录面板配置以下信息完成CNAME解析配置,然后单击确认
      配置 说明
      记录类型 在下拉列表中选择CNAME
      主机记录 您的域名的前缀。
      解析线路 选择默认。
      记录值 输入域名对应的CNAME地址,即您复制的ALB实例的DNS名称。
      TTL 全称Time To Live,表示DNS记录在DNS服务器上的缓存时间,本文使用默认值。
      说明
      • 新增CNAME记录实时生效,修改CNAME记录取决于本地DNS缓存的解析记录的TTL到期时间,一般默认为10分钟。
      • 添加时如遇添加冲突,请换一个解析域名。

步骤七:测试HTTPS双向认证

  1. 实例页面,单击目标实例ID,然后单击监听页签,查看健康检查状态。
    健康检查状态列为正常时,表示后端服务器可以正常接收处理ALB的HTTPS监听转发的请求。
  2. 在浏览器中,输入服务器证书绑定的域名,在弹出的对话框中选中用于验证客户端身份的证书,单击确定客户端认证
  3. 刷新浏览器,您可以观察到客户端的请求在ECS01和ECS02服务器之间的转换。
    ECS01
    ECS02