这是我的apache配置文件:
<VirtualHost *:80>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example1/production/shared/example1.crt
SSLCertificateKeyFile /home/me/example1/production/shared/example1.key
SSLCertificateChainFile /home/me/example1/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example2/production/shared/iwanto.crt
SSLCertificateKeyFile /home/me/example2/production/shared/iwanto.key
SSLCertificateChainFile /home/me/example2/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>
问题是什么:
重新启动服务器时,它会给我一些输出,如下所示:
* Restarting web server apache2
[Sun Jun 17 17:57:49 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
... waiting [Sun Jun 17 17:57:50 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
关于谷歌搜索为什么会出现此问题即将来临,我得到了这样的信息:
您不能将基于名称的虚拟主机与SSL一起使用,因为SSL握手(当浏览器接受安全Web服务器的证书时)发生在HTTP请求之前,HTTP请求标识了适当的基于名称的虚拟主机。如果您打算使用基于名称的虚拟主机,请记住它们只能与您的非安全Web服务器一起使用。
但是无法弄清楚如何在同一服务器上运行两个ssl应用程序。 />
有人可以帮我吗?
#1 楼
将其添加到ports.conf或http.conf并保留上面的配置。
<IfModule mod_ssl.c>
# If you add NameVirtualHost *:443 here, you will also have to change
# the VirtualHost statement in /etc/apache2/sites-available/default-ssl
# to <VirtualHost *:443>
# Server Name Indication for SSL named virtual hosts is currently not
# supported by MSIE on Windows XP.
# !important below!
NameVirtualHost *:443
Listen 443
</IfModule>
评论
需要删除注释“#!important!或将其移至另一行。否则,非常感谢您为我解释此错误信息。
– flickerfly
2014年9月10日19:03
这在Apache 2.4.7中不再起作用
– Malhal
14-10-3在19:25
谢谢。我发现我需要注释掉“侦听443”,因为这在我自己的conf.d / website.conf配置中也已使用
– dlink
18年6月14日在21:02
#2 楼
它也帮助我执行了“ / usr / sbin / apachectl -S”。此命令出口在同一路径上显示两个“ ssl.conf”文件。移动或删除违规者文件,之后一切都会正常。#3 楼
您可以在/etc/apache2/ports.conf
上将其添加到您的apache配置中:<IfModule mod_ssl.c>
Listen 443
<IfModule !mod_authz_core.c>
# Apache 2.2
NameVirtualHost *:443
</IfModule>
</IfModule>
(这在apache 2.2和2.4中均有效)
#4 楼
只需找到“ Listen 443”所在的位置,然后粘贴在NameVirtualHost *:443上面,就我而言是在ssl.conf文件中。
如果重新启动http服务器,则会收到消息“ Listen 443已弃用” “删除” Listen 443“并仅保留NameVirtualHost *:443
评论
警告:NameVirtualHost已过时,并且在当前版本的Apache中无效。不过,这对于非常旧的Apache版本可能会有所帮助。
–迈克尔·汉普顿
20-09-28在12:37
评论
您提供的配置中没有任何_default_虚拟主机,因此它们在其他位置。 apache2ctl -S的输出是什么? (是的,如果您不需要支持运行Windows XP或其他不支持TLS SNI的客户端浏览器,则可以在不同的证书上运行多个基于SSL名称的虚拟主机。是否需要支持Windows? XP?)