2017-03-07 48 views
0

我有一個ec2實例,它由2個不同的域(.com.au和.co.nz)指向。這工作正常。一個EC2實例上的多個SSL證書

我試圖爲這兩個域設置SSL。目前我已經使用了LetsEncrypt併成功爲co.nz域設置了SSL,現在也希望爲.com.au做同樣的事情。

我按照這裏的指南:

https://www.haktansuren.com/installing-free-letsencrypt-ssl-multiple-domains-sub-domains-amazon-web-services-aws-ec2-simple-way/

但是當我通過運行.com.au網站SSLLabs.com我得到一個「證書名稱不匹配錯誤」,當我嘗試直來直去到.com.au域我得到這個(從chrome)「這個服務器不能證明它是**。com.au;它的安全證書來自**。co.nz。」

.com.au域是ss.conf文件中的第二個「虛擬主機」條目,當我更改順序時,我得到了.co.nz域的相同錯誤,所以它似乎只是閱讀其中一個條目或什麼?

感謝一大堆的幫助

+0

我認爲這是對[超級用戶](http://superuser.com)或[服務器故障(http://serverfault.com問題)。你可能想要顯示你的Apache(?)配置。你想在這裏啓用的稱爲SNI--它允許瀏覽器告訴Web服務器將要請求的主機,以便提供正確的證書。 –

回答

0
  1. 您可以爲您要使用ACM任何域自由證書。
  2. 創建Elastic Load Balancer並選擇您剛創建的證書。
  3. EC2實例連接到彈性負載均衡

最好的做法是創建一個啓動配置,並創建一個自動伸縮羣,讓ASG手柄創建EC2實例。在AWS中,您的實例可能隨時被殺死,依賴單個EC2實例並不是一個好習慣。您可能會突然丟失所有可能存儲在臨時存儲中的數據!

0

在Apache中的情況:

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

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

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

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

例如,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>