是否可以在Apache 2中的虚拟主机上拥有多个密钥/证书?

时间:2011-04-28 15:37:59

标签: apache ssl apache2 mod-ssl

我想知道如何配置我的Apache 2(版本2.0.64)以使用多个密钥/证书对进行相互身份验证。

更准确地说,我已经使用此配置将我的apache配置为接受端口443上的SSL连接:

<VirtualHost _default_:443>
     SSLEngine on
     SSLCertificateFile certs/mycert.crt
     SSLCertificateKeyFile certs/mykey.key
     SSLCACertificateFile certs/ca.crt
     .....
</VirtualHost>

我有2个别名,让我们说:

https://myserver/project1
https://myserver/project2

我想使用不同的密钥/证书对(而非mykey.key / mycert.crt)来验证连接到我的第二个网址(https://myserver/project2)的客户端。

我尝试使用<Location><LocationMatch>指令,但这些指令似乎不支持SSL指令。

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

TLS中有一个名为Service Name Indication(又名 SNI )的扩展程序。 TLS客户端指示它所连接的服务器的名称;因此,服务器能够选择要使用的正确密钥和证书。

根据SNI wikipedia page两个Apache 2模块mod_ssl和mod_gnutls似乎支持此扩展以及众多Web客户端

此处提供了Apache 2配置教程:http://en.gentoo-wiki.com/wiki/Apache2/SSL_and_Name_Based_Virtual_Hosts

答案 1 :(得分:0)

可能的解决方案是使用apache2进行SNI:

  • 将apache2升级到2.2.x版
  • 使用apache2
  • 编译/安装gnutls