Apache-2.2

具有 ssl 證書的 Apache 多個虛擬主機

  • November 7, 2012

可能重複:

同一 IP 地址和同一埠上的多個 SSL 域?

我對 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 的更多資訊。

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