我需要使用来自单个IP的SSL托pipe多个Apache虚拟主机。
现在我明白了,因为SSL绕过了HTTP请求,所以没有办法知道哪个主机被请求,直到公钥先被发送到客户端。 这基本上打破了使用标准SSL证书的SSL虚拟主机的可能性。
我已经获得统一通信证书(UCC),也称为主题备用名称(SAN)证书。 这使我可以为多个域提供相同的证书。
我希望这是Apache为任何 SSL请求服务的证书 – 然后让Apache像往常一样parsing虚拟主机,一旦encryptionbuild立起来。
我应该如何configurationApache呢? 我试图研究如何做到这一点,但是我所能find的只是引号,说这是可能的,但没有具体的说法:
wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
虽然Apache可以在请求(和确定)中看到主机名后再重新协商SSL连接,但在初始握手过程中select正确的服务器证书来匹配请求主机名已经太晚了,导致浏览器出现有关证书的警告/错误在他们错误的主机名。
serverfault.com/questions/48334/apache-virtual-hosts-with-ssl
顺便说一下,可以在一个IP地址上有多个SSL安全的命名虚拟主机 – 我在我的网站上这样做 – 但是它会在Apache日志中产生各种警告,并在浏览器中产生证书警告。 我当然不会推荐它的生产网站,需要看起来干净。 大卫7月31日4:58
www.digicert.com/subject-alternative-name.htm
虚拟主机单个IP地址上的多个SSL站点。 在单台服务器上托pipe多个启用了SSL的站点通常需要每个站点具有唯一的IP地址,但具有使用者替代名称的证书可以解决此问题。 使用统一通信SSL(也称为SAN证书),Microsoft IIS 6和Apache都能够使用虚拟主机HTTPS站点。
请帮忙。
我testing了这个在我的apache 2.2.14实例,它工作正常:
使用NameVirtualHost指令(对于ports.conf):
NameVirtualHost *:443
定义你的虚拟主机:
<VirtualHost *:443> ServerName www.siteA.com DocumentRoot "/opt/apache22/htdocs/siteA" SSLCertificateFile "/path/to/my/cert" SSLCertificateKeyFile "/path/to/my/key" </VirtualHost> <VirtualHost *:443> ServerName www.siteB.com DocumentRoot "/opt/apache22/htdocs/siteB" SSLCertificateFile "/path/to/my/cert" SSLCertificateKeyFile "/path/to/my/key" </VirtualHost>
我用这个链接作为资源。