在負載平衡器設定HTTPS終止 - AWS Elastic Beanstalk

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

在負載平衡器設定HTTPS終止

若要更新您的 AWS Elastic Beanstalk 環境以使用 HTTPS,您需要為環境中的負載平衡器設定HTTPS接聽程式。負載平衡器的兩種類型支援HTTPS接聽程式:Classic Load Balancer 和 Application Load Balancer 。

您可以使用 Elastic Beanstalk 主控台或組態檔來設定安全接聽程式,並指派憑證。

注意

單一執行個體環境沒有負載平衡器,也不支援在負載平衡器HTTPS終止。

使用 Elastic Beanstalk 主控台設定安全接聽程式

若要指派憑證給您環境中的負載平衡器
  1. 開啟 Elastic Beanstalk 主控台 ,然後在區域清單中選取您的 AWS 區域。

  2. 在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。

    注意

    如果您有許多環境,請使用搜尋列來篩選環境清單。

  3. 在導覽窗格中,選擇組態

  4. Load balancer (負載平衡器) 組態類別中,選擇 Edit (編輯)

    注意

    如果 Load balancer (負載平衡器) 組態類別沒有 Edit (編輯) 按鈕,您的環境便沒有負載平衡器

  5. 修改負載平衡器頁面,程序會因與您的環境關聯的負載平衡器類型而不同。

    • Classic Load Balancer

      1. 選擇 Add listener (新增接聽程式)

      2. Classic Load Balancer listener (Classic Load Balancer 接聽程式) 對話方塊中,設定下列設定:

        • 對於 Listener port (接聽程式連接埠),輸入傳入流量連接埠,通常為 443

        • 針對接聽程式通訊協定 ,選擇 HTTPS

        • 對於 Instance type (執行個體連接埠),輸入 80

        • 針對執行個體通訊協定 ,選擇 HTTP

        • 針對SSL憑證 ,選擇您的憑證。

      3. 選擇新增

    • Application Load Balancer

      1. 選擇 Add listener (新增接聽程式)

      2. Application Load Balancer listener (Application Load Balancer 接聽程式) 對話方塊中,設定下列設定:

        • Port (連接埠) 中輸入傳入流量連接埠,通常為 443

        • 針對 rotocol (通訊協定),選擇 HTTPS

        • 針對SSL憑證 ,選擇您的憑證。

      3. 選擇新增

      注意

      對於 Classic Load Balancer 和 Application Load Balancer ,如果下拉式功能表未顯示任何憑證,您應該在 AWS Certificate Manager (ACM) (偏好) 中建立或上傳自訂網域名稱的憑證。或者,IAM使用 將憑證上傳至 AWS CLI。

    • Network Load Balancer

      1. 選擇 Add listener (新增接聽程式)

      2. Network Load Balancer listener (Network Load Balancer 接聽程式) 對話方塊中,對於 Port (連接埠),輸入傳入流量連接埠,通常是 443

      3. 選擇新增

  6. 若要儲存變更,請選擇頁面底部的儲存變更

使用組態檔案設定安全接聽程式

您可以利用以下其中一個組態檔設定負載平衡器的安全接聽程式。

範例 .ebextensions/securelistener-clb.config

當您的環境具有 Classic Load Balancer 時,請使用此範例。此範例使用 aws:elb:listener 命名空間中的 選項,在具有指定憑證的連接埠 443 上設定HTTPS接聽程式,並將解密的流量轉送至連接埠 80 上您環境中的執行個體。

option_settings: aws:elb:listener:443: SSLCertificateId: arn:aws:acm:us-east-2:1234567890123:certificate/#################################### ListenerProtocol: HTTPS InstancePort: 80

將反白顯示的文字取代為憑證ARN的 。憑證可以是您在 AWS Certificate Manager (ACM) (偏好) 中建立或上傳的憑證,也可以是IAM使用 上傳的憑證 AWS CLI。

如需 Classic Load Balancer 設定選項的詳細資訊,請參閱Classic Load Balancer 組態命名空間

範例 .ebextensions/securelistener-alb.config

當您的環境具有 Application Load Balancer 時,請使用此範例。此範例使用aws:elbv2:listener命名空間中的選項,在具有指定憑證的連接埠 443 上設定HTTPS接聽程式。此接聽程式將流量路由傳送到預設的程序。

option_settings: aws:elbv2:listener:443: ListenerEnabled: 'true' Protocol: HTTPS SSLCertificateArns: arn:aws:acm:us-east-2:1234567890123:certificate/####################################
範例 .ebextensions/securelistener-nlb.config

當您的環境具有 Network Load Balancer 時,請使用此範例。此範例使用 aws:elbv2:listener 命名空間中的選項來設定連接埠 443 上的接聽程式。此接聽程式將流量路由傳送到預設的程序。

option_settings: aws:elbv2:listener:443: ListenerEnabled: 'true'

設定安全群組

如果您設定負載平衡器,將傳輸資料轉傳到第 80 埠以外的執行個體通訊埠,則您必須新增安全群組的規則,允許從您的負載平衡器通過執行個體通訊埠傳入資料。如果您在自訂 中建立環境VPC,Elastic Beanstalk 會為您新增此規則。

您可以在您應用程式的 .ebextensions 目錄中,將 Resources 金鑰加入組態檔,來新增這項規則。

以下範例組態檔案將傳入規則新增至 AWSEBSecurityGroup 安全群組。如此將允許來自負載平衡器安全群組的連接埠 1000 流量。

範例 .ebextensions/sg-ingressfromlb.config
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 1000 FromPort: 1000 SourceSecurityGroupId: {"Fn::GetAtt" : ["AWSEBLoadBalancerSecurityGroup", "GroupId"]}