Apache的httpd文档说基于名称的虚拟主机不适用于SSL。 但我们的网站正在这样的configuration工作!
在site1.conf中,我们有
<VirtualHost *:443> ServerName site1:443 DocumentRoot /var/www/site1 ErrorLog /var/log/apache2/site1.error.log TransferLog /var/log/apache2/site1.access.log SSLEngine on SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SSLCertificateFile /etc/apache2/keys/trac.crt SSLCertificateKeyFile /etc/apache2/keys/trac.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown ... </VirtualHost>
其他网站几乎完全相同,但是使用site2而不是site1。 据我所知,我们要么非常幸运,要么我不了解文件。 这两个URL工作,并通过HTTPS提供不同的内容。
有人可以摆脱一些光?
最新版本的apache支持服务器名称指示(SNI) ,它允许基于名称的虚拟托pipeHTTPS。 为了SNI的工作,客户端浏览器软件需要具备SNIfunction,但不幸的是,并非所有的浏览器(最显着的是WinXP上的Internet Explorer)。
SSL将起作用,但是除非您有通配证书,并且这些证书都覆盖了该证书,否则将提示客户证书名称与一个或两个网站不匹配。
如果您正在使用自签名证书,那么这通常是一个有争议的问题,因为客户端无论如何都会被提示。
通过给它们分开的IP地址,或者在共享域的地方使用通配符证书,可以从相同的apache服务器提供多个安全的NameVirtualHost。