使用CLB部署HTTPS业务(双向认证)

HTTPS单向认证只对服务器做认证,HTTPS双向认证对服务器和客户端做双向认证。当您在处理一些关键业务时,HTTPS双向认证通过对通信双方做双向认证,为您的业务提供更高的安全性。本文为您介绍如何使用CLB部署HTTPS双向认证。

配置步骤

本指南中使用自签名的CA证书为客户端证书签名,完成以下操作配置HTTPS监听(双向认证):

CLB部署Https双向认证

前提条件

  • 您已创建了CLB实例。

  • 您已经创建了后端服务器ECS01和ECS02,并部署了2个不同的应用服务。

步骤一:购买服务器证书

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

本文以从阿里云数字证书管理服务控制台购买服务器证书为例。更多信息,请参见购买SSL证书

重要

购买SSL证书时需要绑定域名,请确保您拥有真实可用的域名。

步骤二:使用OpenSSL生成CA证书

登录到任意一台安装有OpenSSL工具的Linux机器。

  1. 执行以下命令,创建根CA证书私钥。

    openssl genrsa -out root.key 4096
  2. 执行以下命令,创建根CA证书请求文件。

    openssl req -new -out root.csr -key root.key

    后续参数请自行填写,示例如下:

    说明

    注意CA证书Common Name需要保证唯一性,不要与服务端证书或者客户端证书的Common Name相同。

    Country Name (2 letter code) [XX]:cn
    State or Province Name (full name) []:bj
    Locality Name (eg, city) [Default City]:bj
    Organization Name (eg, company) [Default Company Ltd]:alibaba
    Organizational Unit Name (eg, section) []:test
    Common Name (eg, your name or your servers hostname) []:root
    Email Address []:a.alibaba.com
    A challenge password []:
    An optional company name []:
  3. 执行以下命令,创建根CA证书。

    openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650

    运行结果如下图所示:创建根证书

  4. 执行ls命令,可查看到生成的根CA证书root.crt和根CA证书私钥root.key

步骤三:生成客户端证书

  1. 执行以下命令,生成客户端证书密钥。

  2. openssl genrsa -out client.key 4096
  3. 执行以下命令,生成客户端证书请求文件。Common Name需要配置为您的域名。

  4. openssl req -new -out client.csr -key client.key
  5. 执行以下命令,生成客户端证书。

  6. openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650
  7. 执行以下命令,将生成的客户端证书client.crt转换为浏览器可以识别的PKCS12文件。按照提示输入设置的客户端私钥加密密码。

  8. openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
  9. 执行ls命令,可查看到生成的client.keyclient.crtclient.p12客户端证书文件。

步骤四:安装客户端证书

将生成的客户端证书安装到客户端。

Windows客户端

双击客户端证书client.p12,根据系统证书导入向导提示完成客户端证书安装。

Linux客户端

将此前生成的客户端证书文件client.keyclient.crtroot.crt,上传至Linux客户端任意目录。

本文示例为/home/ca目录,并执行sudo chmod 700 /home/ca修改目录权限。

步骤五:上传服务器证书和CA证书

  1. 登录传统型负载均衡CLB控制台

  2. 在左侧导航栏,选择传统型负载均衡 CLB > 证书管理,然后单击创建证书,上传服务器证书。

  3. 创建证书面板,单击上传非阿里云签发证书,完成以下配置,然后单击创建

    配置

    说明

    证书名称

    输入证书名称。

    证书类型

    本文选择服务器证书

    公钥证书

    复制服务器证书内容。

    私钥

    复制服务器证书的私钥内容。

    证书部署地域

    选择CLB实例所属地域。

  4. 证书管理页面,单击创建证书,上传CA证书。

  5. 创建证书面板,单击上传非阿里云签发证书,完成以下配置,然后单击创建

    配置

    说明

    证书名称

    输入证书名称。

    证书类型

    本文选择CA证书

    客户端CA公钥证书

    上传客户端CA公钥证书。

    证书部署地域

    选择CLB实例所属地域。

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

  1. 登录传统型负载均衡CLB控制台

  2. 单击已创建的负载均衡实例ID。

  3. 监听页签下,单击添加监听

  4. 协议&监听页签下,完成以下配置,然后单击下一步

    • 选择监听协议:HTTPS

    • 监听端口:443

  5. SSL证书页签下,选择已上传的服务器证书。

  6. 单击高级设置后面的修改,启用双向认证,选择已上传的CA证书,然后单击下一步

  7. 选择默认服务器组,单击添加,添加后端服务器。

  8. 其他参数保持默认值,单击下一步提交,完成监听配置。

步骤七:测试HTTPS双向认证

Windows客户端

  1. 在浏览器中,输入https://ip:port,ip为CLB的公网服务地址。在弹出的对话框中根据提示确认证书。

  2. 刷新浏览器,您可以观察到请求在两台ECS服务器之间转换。

    ECS01ECS02

Linux客户端

登录已安装证书的Linux客户端,执行以下命令验证CLB双向认证。

sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://<服务器证书绑定的域名>:<端口>

收到如下所示的回复报文,则表示客户端和服务端已完成双向认证,并将请求分发至两台ECS。验证1