Elastic Load Balancing
传统负载均衡器
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

更新传统负载均衡器的 SSL 协商配置

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

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

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

如果您的某个现有负载均衡器的 SSL 协商配置不是使用最新协议和密码,建议您更新您的负载均衡器以使用 ELBSecurityPolicy-2016-08。如果您愿意,可创建一个自定义配置。强烈建议您先测试新安全策略,然后再升级负载均衡器配置。

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

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

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

更新 HTTPS/SSL 负载均衡器的 SSL 协商配置

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格上的 LOAD BALANCING 下,选择 Load Balancers

  3. 选择您的负载均衡器。

  4. Listeners 选项卡上,对于 Cipher,选择 Change

  5. Select a Cipher 页面上,使用以下选项之一选择安全策略:

    • (建议) 选择 Predefined Security Policy,保留默认策略 ELBSecurityPolicy-2016-08,然后选择 Save

    • 选择 Predefined Security Policy,选择默认值之外的预定义策略,然后选择 Save

    • 选择 Custom Security Policy,然后至少启用一项协议和一个密码,如下所示:

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

      2. 对于 SSL Options,选择 Server Order Preference,以便对 SSL 协商使用预定义 SSL 安全策略中列出的顺序。

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

      4. 选择 Save

使用 AWS CLI 更新 SSL 协商配置

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

使用预定义 SSL 安全策略

  1. 使用以下 describe-load-balancer-policies 命令列出由 Elastic Load Balancing 提供的预定义安全策略:

    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" ] } ...