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



我需要帮助我的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>

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

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

因为,至少在常规应用程序中(如果你不准备避开Windows XP及以下的用户使用IE 7或8使用服务器名称指示见这里和这里),每个SSL证书需要一个单独的IP地址,因为握手发生在主机名传递之前,因此只有IP地址是由客户端给出的,没有其他干净的方法来解决这个问题。因为在vhost条目中可以处理其他任何事情时,主机名不匹配将会发生,并且访问者可以看到SSL证书实际上对哪个域名有效。

然而,一旦人们点击"同意"或"添加例外"来通过警告,你可以在你的SSL vhost中添加这样的块,将人们重定向到适当的域。只对域名本身进行测试,而不是对其中的页面或目录进行测试。(部分取自第一个例子)

 <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的人会知道更多?

最新更新