使用UCC / SAN证书的单个IP上的Apache SSL VirtualHosts


11

我需要通过单个IP使用SSL托管多个Apache虚拟主机。

现在-我了解到,因为SSL环绕HTTP请求,所以在先将公钥发送到客户端之前,无法知道正在请求哪个主机。这从根本上打破了使用标准SSL证书的SSL虚拟主机的可能性。

我已经获得了统一通信证书(UCC),也称为主题备用名称(SAN)证书。这使我可以为多个域提供相同的证书。

我希望这是Apache为任何 SSL请求提供的证书-一旦建立了加密,然后让Apache照常解析虚拟主机。

我应该如何为此配置Apache?我试图研究如何做到这一点,但我能找到的只是引号,说这是可能的,但没有具体说明:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

虽然Apache可以在看到请求中的主机名之后(并且确实)在以后重新协商SSL连接,但为时已晚,无法选择在初始握手期间用于匹配请求主机名的正确服务器证书,从而导致浏览器警告/有关证书包含错误的错误。其中错误的主机名。

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站点。在单个服务器上托管多个启用SSL的站点通常每个站点需要一个唯一的IP地址,但是带有使用者备用名称的证书可以解决此问题。Microsoft IIS 6和Apache都能够使用统一通信SSL(也称为SAN证书)来虚拟主机HTTPS站点。


请帮忙。

Answers:


13

我在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>

我将此链接用作资源。


1
的答案是正确的。在LOOOONNNNNNGGGGG时间内让我绊倒的一件事是我有错字<Virtual *:433>……正确的端口是443!gh,我的一生中有数小时不见了……希望我的痛苦不会白费,这对某人有帮助……
Nick P.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.