

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 更新 Classic Load Balancer 的 SSL 溝通組態
<a name="ssl-config-update"></a>

Elastic Load Balancing 提供的安全政策已預先定義 SSL 溝通組態，可用於溝通用戶端和負載平衡器之間的 SSL 連線。如果將 HTTPS/SSL 通訊協定用於接聽程式，您可以使用其中一個預先定義安全政策，或使用自己的自訂安全政策。

如需關於安全政策的詳細資訊，請參閱[Classic Load Balancer 的 SSL 溝通組態](elb-ssl-security-policy.md)。如需有關 Elastic Load Balancing 提供之安全政策的組態的詳細資訊，請參閱 [Classic Load Balancer 適用的預先定義 SSL 安全政策](elb-security-policy-table.md)。

如果您建立 HTTPS/SSL 接聽程式，不與安全政策相關聯，Elastic Load Balancing 會關聯預先定義的安全政策 `ELBSecurityPolicy-2016-08` 與您的負載平衡器。

如果您願意的話，您可以建立自訂組態。我們強烈建議您在升級負載平衡器組態之前，先測試您的安全政策。

以下範例說明如何更新適用於 HTTPS/SSL 接聽程式的 SSL 溝通組態。請注意，變更不影響負載平衡器節點所接收的請求，而這些請求都在等待路由到運作狀態良好的執行個體，但更新的組態將會與新的請求一起使用。

**Topics**
+ [使用主控台更新 SSL 溝通組態](#ssl-config-update-console)
+ [使用 更新 SSL 溝通組態 AWS CLI](#ssl-config-update-cli)

## 使用主控台更新 SSL 溝通組態
<a name="ssl-config-update-console"></a>

在預設情況下，Elastic Load Balancing 會建立最新預先定義政策與您的負載平衡器之間的關聯。新增新的預先定義政策時，建議您更新負載平衡器，以使用新的預先定義政策。或者，您可以選擇不同的預先定義安全政策或建立自訂政策。

**使用主控台更新 HTTPS/SSL 負載平衡器的 SSL 溝通組態**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格的 **Load Balancing (負載平衡器)**，選擇 **Load Balancer (負載平衡器)**。

1. 選擇負載平衡器的名稱來開啟其詳細資訊頁面。

1. 在**接聽程式**索引標籤中，選擇**管理接聽程式**。

1. 在**管理接聽程式**頁面上找到要更新的接聽程式，在**安全政策**下方選擇**編輯**，然後使用下列其中一個選項選取安全政策：
   + 保留預設政策 **ELBSecurityPolicy-2016-08**，然後選擇**儲存變更**。
   + 選取預設政策以外的預先定義政策，然後選擇**儲存變更**。
   + 選取**自訂**並至少啟用一個通訊協定和一個加密方式，如下所示：

     1. 對於 **SSL Protocols (SSL 通訊協定)**，選擇一或多個可啟用的通訊協定。

     1. 對於 **SSL Options (SSL 選項)**，請選取 **Server Order Preference (伺服器優先順序)** 以使用適用於 SSL 溝通的[Classic Load Balancer 適用的預先定義 SSL 安全政策](elb-security-policy-table.md)。

     1. 對於 **SSL Ciphers (SSL 加密)**，選擇一或多個可啟用的加密方式。如果您已經具備 SSL 憑證，您必須啟用的加密方式須曾用於建立憑證，因為 DSA 和 RSA 加密方式是簽署演算法特有的。

     1. 選擇**儲存變更**。

## 使用 更新 SSL 溝通組態 AWS CLI
<a name="ssl-config-update-cli"></a>

您可以使用預設的預先定義安全政策、`ELBSecurityPolicy-2016-08`、不同的預先定義安全政策，或自訂安全政策。

**使用預先定義的 SSL 安全政策**

1. 使用以下 [describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html) 命令，列出 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
   ```

   如需有關為預先定義安全政策的組態的詳細資訊，請參閱[Classic Load Balancer 適用的預先定義 SSL 安全政策](elb-security-policy-table.md)。

1. 使用 [create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html) 命令來建立使用其中一個預先定義安全政策的 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](https://docs.aws.amazon.com/cli/latest/reference/elb/delete-load-balancer-policy.html) 命令來刪除任何未使用的政策。

1. (選用) 使用以下 [describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html) 命令來確認已建立政策：

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

   回應包含政策的描述。

1. 使用以下 [set-load-balancer-policies-of-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令以啟用負載平衡器連接埠 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` 清單必須包含所有要啟用的 政策。如果您省略的政策目前已啟用，它會被停用。

1. (選用) 使用以下 [describe- load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) 命令來驗證已針對負載平衡器啟用新政策：

   ```
   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 憑證，請務必啟用用於建立您的憑證的加密方式。您的自訂政策名稱不得以 `ELBSample-` 或 `ELBSecurityPolicy-` 開頭，因為這些字首是預留給預先定義安全政策的名稱使用。

**使用自訂 SSL 安全政策**

1. 使用 [create-load-balancer-policy](https://docs.aws.amazon.com/cli/latest/reference/elb/create-load-balancer-policy.html) 命令來建立使用自訂安全政策的 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](https://docs.aws.amazon.com/cli/latest/reference/elb/delete-load-balancer-policy.html) 命令來刪除任何未使用的政策。

1. (選用) 使用以下 [describe-load-balancer-policies](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancer-policies.html) 命令來確認已建立政策：

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

   回應包含政策的描述。

1. 使用以下 [set-load-balancer-policies-of-listener](https://docs.aws.amazon.com/cli/latest/reference/elb/set-load-balancer-policies-of-listener.html) 命令以啟用負載平衡器連接埠 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` 清單必須包含所有要啟用的 政策。如果您省略的政策目前已啟用，它會被停用。

1. (選用) 使用以下 [describe- load-balancers](https://docs.aws.amazon.com/cli/latest/reference/elb/describe-load-balancers.html) 命令來驗證已針對負載平衡器啟用新政策：

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