2014-02-20 115 views
11

在AWS上,我主持了EL2覆蓋的EC2上的多個(完全不同的)域。我已經爲1個域名及其子女申請了1個通配符SSL證書。 (xxxx.site1.com)我可以使用單個AWS ELB爲2個不同的域主持2個SSL證書嗎?

那麼現在我可以爲另一個不同的域再添加一個SSL SSL證書(在同一個ELB上),比如(www.site2.com)?

我在問這是因爲一些文章說,它不會工作,只是粉碎。

請提出建議。

+1

您現在可以擁有多個域,只需使用Amazon ACM(AWS Certificate Manager)創建具有多個域的證書,然後在ELB中使用該域。 https://console.aws.amazon.com/acm/ – Kurt

回答

11

號,你可以做到這一點的唯一方法是,如果你使用第二個端口,用於HTTPS連接(443除外),因爲443並不適用於現實世界的場景是HTTPS

具有默認端口說,你可以簡單地創建第二個ELB併爲其分配第二個通配符證書。您還可以將您的流量轉發到與第一個ELB將流量轉發到的服務器相同的後端服務器。

希望這會有所幫助。

+0

是的,這是有道理的。另一方面(但不常見)是直接將Cert應用到實例上。 –

+2

您還可以獲得SAN(主題備用名稱)證書(也稱爲UCC證書),該證書允許您使用具有單一SSL證書的安全多個域。它可能不適合你,因爲你需要一個通配符證書,但它可以幫助其他不需要通配符的人。請閱讀有關SAN Certs的更多信息:https://www.digicert.com/subject-alternative-name.htm – michaelrmcneill

8

是的。但不能通過終止負載平衡器上的SSL。您必須在ELB上啓用代理協議,並將TCP請求透明地轉發到Web服務器。有此文章中,詳細瞭解如何配置例如NGINX配置了ELB:

Multiple SSL domains on AWS ELB with Nginx

使用AWS CLI啓用:

aws elb create-load-balancer-policy \ 
    --load-balancer-name acme-balancer \ 
    --policy-name EnableProxyProtocol \ 
    --policy-type-name ProxyProtocolPolicyType \ 
    --policy-attributes AttributeName=ProxyProtocol,AttributeValue=True 

aws elb set-load-balancer-policies-for-backend-server \ 
    --load-balancer-name acme-balancer \ 
    --instance-port 9443 \ 
    --policy-names EnableProxyProtocol 

aws elb describe-load-balancers --load-balancer-name acme-balancer 

有一個可用的,如果你mod_proxy_protocol模塊還正在使用Apache。

這樣做不是添加一個額外的分佈層; ELB還處理分發流量,連接流失。但是,SSL終止由每個單獨的服務器處理。

+0

請將鏈接中最有價值的部分添加到答案中。 – sobolevn

+0

這是否意味着Nginx在這裏將成爲Web服務器的一個「額外」Load Balancer? –

0

我同意Garth Kerr對Nginx的回答。

在Apache中的情況:

您可以在ELB或Apache/Nginx的終止SSL證書(服務器)級

在多租戶(多客戶)架構的情況下,我們可能需要在單個ELB下支持不同的客戶(不同域名 - * .abc.com,* .xyz.com),這在現有的ELB設置中不起作用。

解決方案: 您可以像下面的ELB添加偵聽做到這一點: TCP 443(而不是HTTPS - 443) - 這將通過443個請求 然後,您可以在服務器級別終止SSL證書

您必須從外部供應商(如GoDaddy)購買證書並安裝&終止服務器級別的證書。

E.g., Apache的虛擬主機看起來像

NameVirtualHost *:443 
<VirtualHost *:443> 
     ServerName abc.com 

     ####abc HTTPS Certificate 
     SSLEngine on 
     SSLCertificateFile /opt/organization/site/ssl_keys/abc/abc_gd.crt 
     SSLCertificateKeyFile /opt/organization/site/ssl_keys/abc/abc.pem 
     SSLCertificateChainFile /opt/organization/site/ssl_keys/abc/abc_gd_bundle.crt 

     WSGIScriptAlias//opt/organization/site/deployment-config/abc.wsgi 

     ServerSignature On 
     Alias /media/ /opt/organization/site/media/ 
     <Directory /opt/organization/site/media/> 
     Order deny,allow 
     Allow from all 
     </Directory> 
</VirtualHost> 

NameVirtualHost *:80 
<VirtualHost *:80> 
     ServerName abc.com 

     #Rewrite to HTTPS in case of HTTP 
     RewriteEngine On 
     RewriteCond %{SERVER_NAME} abc.com 
     RewriteCond %{HTTP:X-Forwarded-Proto} !https 
     RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 

     WSGIScriptAlias//opt/organization/site/deployment-config/abc.wsgi 
     ServerSignature On 
     Alias /media/ /opt/organization/site/media/ 
     <Directory /opt/organization/site/media/> 
     Order deny,allow 
     Allow from all 
     </Directory> 
</VirtualHost> 
5

自2017年10月10日有可能與應用負載平衡器來做到這一點。您可以將多個證書綁定到負載均衡器上的同一個安全偵聽器,ALB將自動爲每個客戶端選擇最佳的TLS證書。有關詳細信息,請參閱:https://aws.amazon.com/blogs/aws/new-application-load-balancer-sni/

+0

對於需要25個或更少證書的情況,這是一個很好的選擇。具有能夠卸載SSL終端的附加好處。 –

相關問題