Apache-2.2

在一個 ip 和一個埠上服務多個域

  • January 7, 2016

我想在我的 CentOS 伺服器上提供多個域。我在 http 上執行伺服器。現在我想使用另一個證書在 https 上執行這些伺服器。

我這樣寫 ssl.conf 。

Listen 443
<VirtualHost *:443>
 SSLEngine on
 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
 SSLCertificateFile /etc/httpd/ssl/apache.crt
 SSLCertificateKeyFile /etc/httpd/ssl/apache.key
 SSLCertificateChainFile /etc/httpd/ssl/ca.crt
 ServerName www.example.com:443
 DocumentRoot "/var/www/html"
</VirtualHost>
<VirtualHost *:443>
 SSLEngine on
 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
 SSLCertificateFile /etc/httpd/ssl/two.crt
 SSLCertificateKeyFile /etc/httpd/ssl/two.key
 SSLCertificateChainFile /etc/httpd/ssl/ca.crt
 ServerName two.example.com:443
 DocumentRoot /var/www/html/two
</VirtualHost>

但它不起作用。我該怎麼做?

謝謝。

不幸的是,你不能。原因是客戶端瀏覽器請求中的 URL 在到達您的伺服器時與請求的其餘部分一起被加密。結果,如果不知道它打算用於哪個主機(和哪個證書),就無法解密它。

過去,我用兩種不同的方式解決了這個問題。第一個需要防火牆訪問和多個公共 IP 地址,第二個需要更花哨的 SSL 證書。

  1. 我通過在不同埠上執行多個 SSL 網站,然後將來自防火牆上不同 IP 地址的 SSL 流量引導到伺服器上的不同埠來執行多個 SSL 網站。所以 - 一台伺服器,一個內部 IP 地址,但每個站點都有一個單獨的外部 IP 地址,並在防火牆處使用埠轉發來修改傳入埠號,從而引導流量。
  2. 另一種選擇是擁有一個可跨多個域工作的證書。這稱為 SAN(安全備用名稱)證書。例如,Geotrust 也可以添加最多 25 個域名。這是更簡單的方法,因為當請求到達時,每個站點都使用相同的證書,因此可以按照您描述的方式解密和處理請求。這些證書比基本的 SSL 證書貴很多,但公平地說,它們要好一些。

引用自:https://serverfault.com/questions/747393