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