我有两个站点需要不同的域,但必须使用运行Apache的同一台服务器,也必须使用SSL。下面是一个例子:
每个域都有不同的文档根路径。SNI不是一个选项,但是我有一个用于*.example.com的通配符SSL证书。分配第二个IP不是一个选项。
如何将Apache配置为对端口443上的任何通信使用通配符SSL证书,然后在SSL握手之后继续使用基于名称的虚拟主机?
在nginx中,它可以是一个基于域名的if块,并且在它之外具有SSL配置。是否有与Apache2.2相同的功能?
编辑: SNI不是我的客户请求的一个选项,因为相对于其他浏览器支持减少了。我正在寻找使用旧标准为证书提供服务的一些方法,然后将经典的VHost定义应用于ssl端口,就像它们应用在端口80上一样。
发布于 2014-08-11 08:06:40
如果您有通配符ssl证书,这意味着您可以在两个vhost的配置文件中使用此cert。
您可以简单地在vhost配置文件中给出它们:
<VirtualHost *:443>
ServerName www.example.com
SSLCertificateFile /path/to/file.crt
SSLCertificateKeyFile /path/to/file.key
...
</VirtualHost>
<VirtualHost *:443>
ServerName beta.example.com
SSLCertificateFile /path/to/file.crt
SSLCertificateKeyFile /path/to/file.key
...
</VirtualHost>不要忘记:虚拟主机标识将基于Host:请求头,而不是在SNI中。SNI只用于ssl握手之前的vhost标识。在SSL握手的SNI部分和HTTP部分使用不同的vhost是完全可以的,尽管这些特殊的查询会在apache日志中引起一些警告。
https://serverfault.com/questions/619464
复制相似问题