本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在負載平衡器設定 HTTPS 終止
若要更新您的 AWS Elastic Beanstalk 環境以使用 HTTPS,您需要為環境中的負載平衡器設定 HTTPS 接聽程式。兩種負載平衡器類型支援 HTTPS 接聽程式:Classic Load Balancer 和 Application Load Balancer。
您可以使用 Elastic Beanstalk 主控台或組態檔來設定安全接聽程式,並指派憑證。
注意
單一執行個體環境沒有負載平衡器,不在負載平衡器支援 HTTPS 終止。
使用 Elastic Beanstalk 主控台設定安全接聽程式
若要指派憑證給您環境中的負載平衡器
開啟 Elastic Beanstalk 主控台
,然後在區域清單中選取您的 AWS 區域。 -
在導覽窗格中,選擇環境,然後在清單中選擇您環境的名稱。
注意
如果您有許多環境,請使用搜尋列來篩選環境清單。
在導覽窗格中,選擇組態。
-
在 Load balancer (負載平衡器) 組態類別中,選擇 Edit (編輯)。
注意
如果 Load balancer (負載平衡器) 組態類別沒有 Edit (編輯) 按鈕,您的環境便沒有負載平衡器。
-
在修改負載平衡器頁面,程序會因與您的環境關聯的負載平衡器類型而不同。
-
Classic Load Balancer
-
選擇 Add listener (新增接聽程式)。
-
在 Classic Load Balancer listener (Classic Load Balancer 接聽程式) 對話方塊中,設定下列設定:
對於 Listener port (接聽程式連接埠),輸入傳入流量連接埠,通常為
443
。對於 Listener protocol (接聽程式協定),選擇 HTTPS 。
對於 Instance type (執行個體連接埠),輸入
80
。對於 Instance protocol (執行個體協定),選擇 HTTP。
對於 SSL certificate (SSL 憑證),選擇您的憑證。
-
選擇新增。
-
-
Application Load Balancer
-
選擇 Add listener (新增接聽程式)。
-
在 Application Load Balancer listener (Application Load Balancer 接聽程式) 對話方塊中,設定下列設定:
-
在 Port (連接埠) 中輸入傳入流量連接埠,通常為
443
。 -
請在 Protocol (通訊協定) 中選擇 HTTPS。
-
對於 SSL certificate (SSL 憑證),選擇您的憑證。
-
-
選擇新增。
注意
若是使用 Classic Load Balancer 和 Application Load Balancer,如果下拉式選單未顯示任何憑證,您應該在 AWS Certificate Manager (ACM) (偏好) 中為自訂網域名稱建立或上傳憑證。或是使用 AWS CLI將憑證上傳到 IAM。
-
-
Network Load Balancer
-
選擇 Add listener (新增接聽程式)。
-
在 Network Load Balancer listener (Network Load Balancer 接聽程式) 對話方塊中,對於 Port (連接埠),輸入傳入流量連接埠,通常是
443
。 -
選擇新增。
-
-
-
若要儲存變更,請選擇頁面底部的儲存變更。
使用組態檔案設定安全接聽程式
您可以利用以下其中一個組態檔設定負載平衡器的安全接聽程式。
範例 .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"]}