2012-11-10 41 views
1

我有一個CentOS/Apache + OpenSSL服務器。我使用通配符子域來託管兩個域名(應用程序邏輯表面正確的站點),例如具有多個域名的通配符SSL

的https://*.testing1.com

的https://*.testing2.com

它通過HTTP的偉大工程: -

<VirtualHost *:80> 
    # Admin email, Server Name (domain name) and any aliases 
    ServerAdmin [email protected] 
    ServerName testing1.com 
    ServerName testing2.com 

    ServerAlias *.testing1.com *.testing2.com 

    # Index file and Document Root (where the public files are located) 
    DirectoryIndex index.html index.php 
    DocumentRoot /home/app/public_html/public 

</VirtualHost> 

我已經購買了兩個通配符SSL證書適用於testing1.com和testing2.com,但我不確定如何在此結構中進行設置: -

<VirtualHost *.testing1.com:443> 
    SSLEngine On 
    SSLCertificateFile /etc/httpd/ssl/*.testing1.com.crt 
    SSLCertificateKeyFile /etc/httpd/ssl/*.testing1.com.key 
    SSLCACertificateFile /etc/httpd/ssl/geotrust.cer 

    ServerAdmin [email protected] 
    ServerName testing1.com 
    ServerAlias *.testing1.com 

     DirectoryIndex index.html index.php 
     DocumentRoot /home/app/public_html/public 

    </VirtualHost> 

    <VirtualHost *.testing2.com:443> 
    SSLEngine On 
    SSLCertificateFile /etc/httpd/ssl/*.testing2.com.crt 
    SSLCertificateKeyFile /etc/httpd/ssl/*.testing2.com.key 
    SSLCACertificateFile /etc/httpd/ssl/geotrust.cer 

    ServerAdmin [email protected] 
    ServerName testing2.com 
    ServerAlias *.testing2.com 

     DirectoryIndex index.html index.php 
     DocumentRoot /home/app/public_html/public 

    </VirtualHost> 

上面的SSL不適用於* .testing1.com定義,也不適用於testing1.com。

我還需要重複這一testing2.com

+0

我在這裏有點超出我的深度,但不是/etc/httpd/ssl/*.testing1.com.crt文件路徑?它可以有星號嗎?對於noobness的道歉 –

回答

2

基於域名的virtualhosts,如果所有的virtualhosts都在同一個域中,你必須爲該域通配符SSL證書SSL西港島線才能正常工作。

但你有2個不同的域名。

在這種情況下,只有當您爲每個啓用SSL的虛擬主機提供自己的IP地址時,它纔會起作用。 所以你應該使用基於IP的虛擬主機,而不是基於名字的。

說明: 請求的ServerName包含在HTTP請求標頭中,但在此之前必須已經設置SSL加密。所以ServerName只有在加密完成後纔可用。因此,Apache永遠不會知道哪個SSL證書可以提供,而只需使用該特定IP地址上的第一個。