我需要帮助我的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的人会知道更多?