Apache-2.2
具有 ssl 證書的 Apache 多個虛擬主機
可能重複:
我對 Apache 和多個 SSL 證書有疑問。如果我只為一個域配置它,一切都可以正常工作,但是當我添加另一個作為虛擬主機時,它會返回一個錯誤:
VirtualHost domain1.cz:443 overlaps with VirtualHost domain2.sk:443, the first has precedence, perhaps you need a NameVirtualHost directive [Wed Nov 07 16:14:49 2012] [warn] NameVirtualHost *:443 has no VirtualHosts
我嘗試了許多虛擬主機配置方法的組合,但結果仍然非常相似 - 第一個域得到正確保護,第二個(domain2.sk)從第一個域接收證書。
請問,你能幫我配置這種證書嗎?
NameVirtualHost *:443 <VirtualHost domain1.cz:443> ServerName domain1.cz DocumentRoot /var/www/www.domain1.cz/htdocs/ SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/apache2/ssl/domain1.cz/ssl.crt SSLCertificateKeyFile /etc/apache2/ssl/domain1.cz/ssl.key SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem SSLCACertificateFile /etc/apache2/ssl/ca.pem SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown CustomLog /var/www/www.domain1.cz/logs/ssl-access.log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" LogLevel warn ErrorLog /var/www/www.domain1.cz/logs/ssl-error.log </VirtualHost> <VirtualHost domain2.sk:443> ServerName domain2.sk DocumentRoot /var/www/www.domain2.sk/htdocs/ SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/apache2/ssl/domain2.sk/ssl.crt SSLCertificateKeyFile /etc/apache2/ssl/domain2.sk/ssl.key SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem SSLCACertificateFile /etc/apache2/ssl/ca.pem SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown CustomLog /var/www/www.domain2.sk/logs/ssl-access.log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" LogLevel warn ErrorLog /var/www/www.domain2.sk/logs/ssl-error.log </VirtualHost>
每個 IP 地址/埠只能提供一個 SSL 證書。為了讓多個 SSL 工作,您要麼需要另一個 IP 地址(推薦),要麼將第二個 SSL 證書綁定到您 IP 上的另一個埠(功能性,但對於您的網站訪問者來說,埠有一個痛苦 b/c包含在 URL 中)。與您的主機核實,他們中的大多數都可以負擔得起額外的 IP。
這個執行緒有更多資訊。
編輯:我不會語法。
您發布的配置應該是正確的,但您必須
<VirtualHost *:443>
在兩種情況下都使用,而不是<VirtualHost domain1.cz:443>
or<VirtualHost domain2.sk:443>
。您在指定
domain1.cz
和指令domain2.sk
中是正確的。ServerName
請注意,這將使用稱為伺服器名稱指示的功能。您必須執行足夠新的 Apache 和 OpenSSL 庫副本,並且它不適用於較舊的瀏覽器。在此處閱讀有關 SNI 的更多資訊。