本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在負載平衡器設定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
。針對接聽程式通訊協定 ,選擇 HTTPS。
對於 Instance type (執行個體連接埠),輸入
80
。針對執行個體通訊協定 ,選擇 HTTP。
針對SSL憑證 ,選擇您的憑證。
-
選擇新增。
-
-
Application Load Balancer
-
選擇 Add listener (新增接聽程式)。
-
在 Application Load Balancer listener (Application Load Balancer 接聽程式) 對話方塊中,設定下列設定:
-
在 Port (連接埠) 中輸入傳入流量連接埠,通常為
443
。 -
針對 rotocol (通訊協定),選擇 HTTPS。
-
針對SSL憑證 ,選擇您的憑證。
-
-
選擇新增。
注意
對於 Classic Load Balancer 和 Application Load Balancer ,如果下拉式功能表未顯示任何憑證,您應該在 AWS Certificate Manager (ACM) (偏好) 中建立或上傳自訂網域名稱的憑證。或者,IAM使用 將憑證上傳至 AWS CLI。
-
-
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"]}