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

配置步骤

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

CLB部署Https双向认证

前提条件

  • 您已通过OpenSSL官网下载并安装 OpenSSL 工具(1.1.1 或以上版本)。
  • 您已经创建了实例ECS01和ECS02,并部署了2个不同的应用服务。具体操作,请参见使用向导创建实例

步骤一:准备服务器证书

您可以通过浏览器检查服务器发送的证书是否是由自己信赖的中心签发的。您可以向阿里云云盾SSL证书购买服务器证书,或者向其他服务商处购买。更多信息,请参见上传证书

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

  1. 打开命令窗口,执行以下命令在/root目录下新建一个ca文件夹,并在ca文件夹下创建四个子文件夹。
    sudo mkdir ca
     cd ca
     sudo mkdir newcerts private conf server
    其中:
    • newcerts文件夹:用于存放CA签署过的数字证书(证书备份目录)。
    • private文件夹:用于存放CA的私钥。
    • conf文件夹:用于存放一些简化参数用的配置文件。
    • server文件夹:用于存放服务器证书文件。
  2. 执行以下命令,在conf目录下新建一个包含以下信息的openssl.conf文件。
    [ ca ]
     default_ca = foo
     [ foo ] 
     dir = /root/ca
     database = /root/ca/index.txt
     new_certs_dir = /root/ca/newcerts
     certificate = /root/ca/private/ca.crt
     serial = /root/ca/serial
     private_key = /root/ca/private/ca.key
     RANDFILE = /root/ca/private/.rand
     default_days = 365
     default_crl_days= 30按照提示输入客户端c
     default_md = md5
     unique_subject = no
     policy = policy_any
     [ policy_any ]
     countryName = match
     stateOrProvinceName = match
     organizationName = match
     organizationalUnitName = match
     localityName = optional
     commonName = supplied
     emailAddress = optional
  3. 依次执行以下命令,生成私钥key文件。
    cd /root/ca   
        sudo openssl genrsa -out private/ca.key
    运行结果如下图所示:p2750
  4. 执行以下命令并按照界面提示输入对应信息,生成证书请求csr文件。
      sudo openssl req -new -key private/ca.key -out private/ca.csr

    运行结果如下图所示,供您参考。Common Name需要输入您的传统型负载均衡CLB的域名。

    p2753
  5. 运行以下命令生成凭证crt文件。
      sudo openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
  6. 运行以下命令为CA的key设置起始序列号。
    起始序列号可以是任意四个字符。本示例中您可以自定义FACE
      sudo echo FACE > serial
  7. 运行以下命令创建CA键库。
      sudo touch index.txt

步骤三:生成客户端证书

  1. 打开命令窗口,执行以下命令,在ca目录内创建一个存放客户端key的目录users
      sudo mkdir users
  2. 完成以下操作为客户端创建一个key。
    1. 执行以下命令。
        sudo openssl genrsa -des3 -out /root/ca/users/client.key 1024
    2. 根据提示,输入pass phrase。
      pass phrase是当前key的口令,以防止本密钥泄漏后被人盗用。两次输入同一个密码。
  3. 执行以下命令为客户端key创建一个证书签名请求csr文件。
      sudo openssl req -new -key /root/ca/users/client.key -out /root/ca/users/client.csr
    输入该命令后,根据提示输入步骤2输入的pass phrase,然后根据提示,提供对应的信息。
    说明 A challenge password是客户端证书口令(请注意将它和client.key的口令区分开,client.key为客户端密钥,本教程设置密码为test),可以与服务器端证书或者根证书口令一致。
    运行结果如下图所示:p2757
  4. 执行以下命令,使用步骤二:使用OpenSSL生成CA证书中的CA Key为刚才的客户端key签名。
      sudo openssl ca -in /root/ca/users/client.csr -cert /root/ca/private/ca.crt -keyfile /root/ca/private/ca.key -out /root/ca/users/client.crt -config "/root/ca/conf/openssl.conf"

    当出现确认是否签名的提示时,两次都输入y

    运行结果如下图所示:2758
  5. 完成以下操作将证书转换为浏览器可以识别的PKCS12文件。
    1. 执行以下命令。
        sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12
    2. 按照提示输入客户端client.key的pass phrase。
    3. 输入用于导出证书的密码。此密码为客户端证书的保护密码,在安装客户端证书时需要输入该密码。
      运行结果如下图所示:2759
  6. 执行以下命令查看生成的客户端证书。
    cd users
     ls
    运行结果如下图所示:2760

步骤四:安装客户端证书

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

  1. 打开命令行窗口,执行以下命令导出步骤三:生成客户端证书中生成的客户端证书。
    scp root@IPaddress:/root/ca/users/client.p12 ./          //IPaddress是生成客户端证书的服务器的IP地址
  2. 在IE浏览器中导入下载的客户端证书。
    1. 打开IE浏览器,选择设置 > Internet选项
    2. 单击内容页签,然后单击证书,导入下载的客户端证书。在导入证书时需要输入步骤三:生成客户端证书生成PKCS12文件的密码。

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

  1. 登录传统型负载均衡CLB控制台
  2. 在左侧导航栏,选择传统型负载均衡 CLB(原SLB) > 证书管理,然后单击创建证书,上传服务器证书。
  3. 创建证书面板,单击上传非阿里云签发证书,完成以下配置,然后单击创建
    配置 说明
    证书名称

    输入证书名称。

    名称长度限制为1~80个字符,只能包含字母、数字、连接号(-)、正斜线(/)、英文句点(.)、下划线(_)和星号(*)。

    组织 选择证书所属的组织。
    资源集 选择证书所属的资源集。
    证书类型 本文选择服务器证书
    公钥证书 复制服务器证书内容。

    单击查看样例查看正确的证书样式。详情参见证书要求

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

    单击查看样例查看正确的证书样式。详情参见证书要求

    注意 只有上传服务器证书时,才需要上传私钥。
    证书部署地域 本文选择华东1(杭州)
  4. 在左侧导航栏,选择传统型负载均衡 CLB(原SLB) > 证书管理,然后单击创建证书,上传CA证书。
  5. 创建证书面板,单击上传非阿里云签发证书,完成以下配置,然后单击创建
    配置 说明
    证书名称

    输入证书名称。

    名称长度限制为1~80个字符,只能包含字母、数字、连接号(-)、正斜线(/)、英文句点(.)、下划线(_)和星号(*)。

    组织 选择证书所属的组织。
    资源集 选择证书所属的资源集。
    证书类型 本文选择CA证书
    客户端CA公钥证书 上传客户端CA公钥证书。

    单击查看样例查看正确的证书样式。详情参见证书要求

    证书部署地域 本文选择华东1(杭州)

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

  1. 登录传统型负载均衡CLB控制台
  2. 实例管理页面,单击创建传统型负载均衡
  3. 配置负载均衡实例,单击立即购买完成支付。
    实例类型选择公网,地域选择华东1(杭州)。详细配置信息请参见创建实例
  4. 创建成功后,返回实例管理页面,选择华东1(杭州)地域。
  5. 单击已创建的负载均衡实例ID链接,或者在操作列单击监听配置向导
  6. 监听页签下,单击添加监听
  7. 协议&监听页签下,完成以下配置,然后单击下一步
    • 选择负载均衡协议:HTTPS
    • 监听端口443
    • 调度算法:轮询(RR)
  8. SSL证书页签下,选择已上传的服务器证书。
  9. 单击高级设置后面的修改,打开双向认证,选择已上传的CA证书,然后单击下一步
  10. 选择默认服务器组,单击继续添加,添加ECS服务器,后端协议监听端口设置为443
  11. 其他参数保持默认值,单击下一步提交,完成负载均衡实例配置。

步骤七:测试HTTPS双向认证

  1. 实例管理页面,查看健康检查状态。
    当状态为正常时,表示后端服务器可以正常接收处理负载均衡监听转发的请求。
  2. 在浏览器中,输入负载均衡的公网服务地址,在弹出的对话框中根据提示确认证书。
  3. 刷新浏览器,您可以观察到请求在两台ECS服务器之间转换。
    ECS01ECS02