更新经典负载均衡器的 SSL 协商配置 - Elastic Load Balancing

更新经典负载均衡器的 SSL 协商配置

Elastic Load Balancing 提供了具有预定义 SSL 协商配置的安全策略,可使用这些配置协商客户端与负载均衡器之间的 SSL 连接。如果您对侦听器使用 HTTPS/SSL 协议,则可使用其中一个预定义安全策略,或者使用您自己的自定义安全策略。

有关安全策略的更多信息,请参阅经典负载均衡器的 SSL 协商配置。如需了解 Elastic Load Balancing 提供的安全策略的配置,请参阅经典负载均衡器的预定义 SSL 安全策略

如果在没有关联安全策略的情况下创建 HTTPS/SSL 侦听器,Elastic Load Balancing 会将默认预定义安全策略 ELBSecurityPolicy-2016-08 与您的负载均衡器关联。

如果您愿意,可创建一个自定义配置。强烈建议您先测试安全策略,然后再升级负载均衡器配置。

以下示例说明如何为 HTTPS/SSL 侦听器更新 SSL 协商配置。请注意,更改不影响由负载均衡器节点接收并等待路由到运行正常的实例的请求,但是更新的配置将用于接收的新请求。

使用控制台更新 SSL 协商配置

默认情况下,Elastic Load Balancing 将最新的预定义策略与您的负载均衡器关联。添加新的预定义策略后,建议您将负载均衡器更新为使用新的预定义策略。或者,您也可以选择其他预定义安全策略或创建自定义策略。

使用控制台更新 HTTPS/SSL 负载均衡器的 SSL 协商配置
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格上的负载均衡下,选择负载均衡器

  3. 选择负载均衡器的名称以打开其详细信息页面。

  4. 侦听器选项卡上,选择管理侦听器

  5. 管理侦听器页面上,找到要更新的侦听器,选择安全策略下的编辑,然后使用下面的任意一种选项选择安全策略:

    • 保留默认策略 ELBSecurityPolicy-2016-08,然后选择保存更改

    • 选择除默认策略以外的预定义策略,然后选择保存更改

    • 选择自定义,然后至少启用一项协议和一个密码,如下所示:

      1. 对于 SSL Protocols,选择要启用的一个或多个协议。

      2. 对于 SSL 选项,选择服务器顺序首选项,以便对 SSL 协商使用经典负载均衡器的预定义 SSL 安全策略中列出的顺序。

      3. 对于 SSL Ciphers,选择要启用的一个或多个密码。如果您已有一个 SSL 证书,则必须启用用于创建该证书的密码,因为 DSA 和 RSA 密码特定于签名算法。

      4. 选择 Save changes(保存更改)

使用 AWS CLI 更新 SSL 协商配置

您可使用默认预定义安全策略 ELBSecurityPolicy-2016-08、其他预定义安全策略或自定义安全策略。

使用预定义 SSL 安全策略
  1. 使用以下 describe-load-balancer-policies 命令列出由 Elastic Load Balancing 提供的预定义安全策略。您可以使用的语法取决于您使用的操作系统和 Shell。

    Linux

    aws elb describe-load-balancer-policies --query 'PolicyDescriptions[?PolicyTypeName==`SSLNegotiationPolicyType`].{PolicyName:PolicyName}' --output table

    Windows

    aws elb describe-load-balancer-policies --query "PolicyDescriptions[?PolicyTypeName==`SSLNegotiationPolicyType`].{PolicyName:PolicyName}" --output table

    下面是示例输出:

    ------------------------------------------ | DescribeLoadBalancerPolicies | +----------------------------------------+ | PolicyName | +----------------------------------------+ | ELBSecurityPolicy-2016-08 | | ELBSecurityPolicy-TLS-1-2-2017-01 | | ELBSecurityPolicy-TLS-1-1-2017-01 | | ELBSecurityPolicy-2015-05 | | ELBSecurityPolicy-2015-03 | | ELBSecurityPolicy-2015-02 | | ELBSecurityPolicy-2014-10 | | ELBSecurityPolicy-2014-01 | | ELBSecurityPolicy-2011-08 | | ELBSample-ELBDefaultCipherPolicy | | ELBSample-OpenSSLDefaultCipherPolicy | +----------------------------------------+

    若要确定为策略启用的密码,请使用以下命令:

    aws elb describe-load-balancer-policies --policy-names ELBSecurityPolicy-2016-08 --output table

    有关预定义安全策略的配置的信息,请参阅经典负载均衡器的预定义 SSL 安全策略

  2. 使用 create-load-balancer-policy 命令通过您在上一步中描述的预定义安全策略之一来创建 SSL 协商策略。例如,以下命令使用默认预定义安全策略:

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Reference-Security-Policy,AttributeValue=ELBSecurityPolicy-2016-08

    如果您超出了负载均衡器的策略数量限制,请使用 delete-load-balancer-policy 命令删除任何无用的策略。

  3. (可选)使用以下 describe-load-balancer-policies 命令验证是否已创建策略:

    aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy

    响应包括策略的描述。

  4. 使用以下 set-load-balancer-policies-of-listener 命令在负载均衡器端口 443 上启用策略:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
    注意

    set-load-balancer-policies-of-listener 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。--policy-names 列表必须包括要启用的所有策略。如果您省略当前已启用的策略,则禁用此策略。

  5. (可选)使用以下 describe-load-balancers 命令验证是否已为负载均衡器端口启用新策略:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    响应表明已在端口 443 上启用该策略。

    ... { "Listener": { "InstancePort": 443, "SSLCertificateId": "ARN", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-SSLNegotiation-policy" ] } ...

当您创建自定义安全策略时,必须至少启用一项协议和一个密码。DSA 和 RSA 密码特定于签名算法,用于创建 SSL 证书。如果您已有一个 SSL 证书,请确保启用用于创建该证书的密码。您的自定义策略的名称不得以 ELBSecurityPolicy-ELBSample- 开头,因为这些前缀是为预定义安全策略的名称保留的。

使用自定义 SSL 安全策略
  1. 使用 create-load-balancer-policy 命令通过自定义安全策略创建 SSL 协商策略。例如:

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy --policy-type-name SSLNegotiationPolicyType --policy-attributes AttributeName=Protocol-TLSv1.2,AttributeValue=true AttributeName=Protocol-TLSv1.1,AttributeValue=true AttributeName=DHE-RSA-AES256-SHA256,AttributeValue=true AttributeName=Server-Defined-Cipher-Order,AttributeValue=true

    如果您超出了负载均衡器的策略数量限制,请使用 delete-load-balancer-policy 命令删除任何无用的策略。

  2. (可选)使用以下 describe-load-balancer-policies 命令验证是否已创建策略:

    aws elb describe-load-balancer-policies --load-balancer-name my-loadbalancer --policy-name my-SSLNegotiation-policy

    响应包括策略的描述。

  3. 使用以下 set-load-balancer-policies-of-listener 命令在负载均衡器端口 443 上启用策略:

    aws elb set-load-balancer-policies-of-listener --load-balancer-name my-loadbalancer --load-balancer-port 443 --policy-names my-SSLNegotiation-policy
    注意

    set-load-balancer-policies-of-listener 命令将指定负载均衡器端口的当前策略集替换为指定的策略集。--policy-names 列表必须包括要启用的所有策略。如果您省略当前已启用的策略,则禁用此策略。

  4. (可选)使用以下 describe-load-balancers 命令验证是否已为负载均衡器端口启用新策略:

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    响应表明已在端口 443 上启用该策略。

    ... { "Listener": { "InstancePort": 443, "SSLCertificateId": "ARN", "LoadBalancerPort": 443, "Protocol": "HTTPS", "InstanceProtocol": "HTTPS" }, "PolicyNames": [ "my-SSLNegotiation-policy" ] } ...