1

我想知道如何配置我的 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)来验证连接到我的第二个 URL(https://myserver/project2)的客户端。

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

如何才能做到这一点?

4

2 回答 2

1

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

根据SNI 维基百科页面,Apache 2 模块 mod_ssl 和 mod_gnutls 似乎都支持这个扩展,还有许多 Web 客户端

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

于 2011-04-28T16:06:48.467 回答
0

SNI 与 apache2 的可能解决方案:

  • 将 apache2 升级到 2.2.x 版本
  • 使用 apache2 编译/安装 gnutls
于 2011-06-14T07:21:25.947 回答