Apache config - https://显示与同一服务器上的其他域的默认SSL站点

时间:2013-04-09 14:33:30

标签: apache apache2 lamp

我的Apache2配置需要帮助。

我在此服务器上托管的某些网站不是SSL,而是一个SSL网站。 问题是输入服务器上托管的任何站点的https://都会带来证书错误的SSL托管站点。

如何阻止此网站展示?

 <IfModule mod_ssl.c>
 NameVirtualHost *:443
 <VirtualHost *:443>
    ServerAdmin miked@********.ca
    ServerName www.********.com
  CheckSpelling on
  CheckCaseOnly on


    DocumentRoot /var/vhosts/********.com
    <Directory />
            Options FollowSymLinks
            AllowOverride All


    </Directory>
    <Directory /var/vhosts/*******.com>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined


    LogLevel error

    CustomLog ${APACHE_LOG_DIR}/*******-ssl_access.log combined env=!chat
    ErrorLog ${APACHE_LOG_DIR}/*******-ssl-error.log


    #   SSL Engine Switch:
    #   Enable/Disable SSL for this virtual host.
    SSLEngine on

    #SSLCertificateFile    /etc/apache2/ssl/apache.crt


    SSLCertificateFile      /etc/apache2/ssl/lubrigard.crt
    SSLCertificateKeyFile   /etc/apache2/ssl/apache.key
    SSLCertificateChainFile /etc/apache2/ssl/digicertCA.crt

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
            SSLOptions +StdEnvVars
    </Directory>

    BrowserMatch "MSIE [2-6]" \
            nokeepalive ssl-unclean-shutdown \
            downgrade-1.0 force-response-1.0
    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

 </VirtualHost>
 </IfModule>

1 个答案:

答案 0 :(得分:2)

9个月太晚了,我知道,我绝不是apache配置专家,但是 -

我认为这个问题的真正解决方案是为您的服务器分配一个额外的IP地址,并让SSL vhost只监听该IP地址。

因为,至少在常规应用程序中(即如果您不准备使用服务器名称指示来避开Windows XP用户以及IE 7或8以下,请参阅here和{ {3}})每个SSL证书都需要一个单独的IP地址,因为握手发生在主机名传递之前,因此客户端只提供IP地址,没有其他干净的方法,因为主机名不匹配将在vhost条目中处理任何其他内容时发生,访问者可以查看SSL证书实际上有效的域名。

然而,一旦人们点击“同意”或“添加例外”以通过警告,就可以将这样的块添加到您的SSL虚拟主机中,以将人们重定向到适当的域。仅对域名本身进行了测试,而不是对其中的页面或目录进行测试。 (部分来自给定here的第一个例子)

 <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{HTTP_HOST}   !^(www\.)?********\.com [NC]
      RewriteCond %{HTTP_HOST}   !^$
      RewriteCond %{HTTP_HOST}   ^(.*)$
      RewriteRule ^/(.*)         http://%1/$1 [L,R]
  </IfModule>

...星号表示拥有 ssl的域名。这应该重写对其HTTP等价物的所有其他请求,同时保持对ssl域的请求不变。

如果您无法获得另一个IP地址,并且取决于您的访问者,也许SNI是可行的方式。

也许在Serverfault上的人会知道更多?