我们有一个网络应用程序,可以为不同域下的客户托管多个网站。所有这些域都托管在一个apache vhost上,不同站点的逻辑分离由软件完成。
我们希望为其中一些虚拟网站提供ssl支持。原则上应该没问题,因为在建立ssl连接后,软件可以使用host:header来路由到正确的网站。
但是:我如何告诉apache提供正确的证书,具体取决于所请求的主机?
是否有可能将证书映射到域,例如有类似的东西:
SSLCertificateFile文件
感谢所有帮助!
答案 0 :(得分:4)
除了@bobince所说的,您可以在主题备用名称扩展名中使用多个DNS条目在同一证书中使用多个主机名(不一定使用通配符或子域)。 (CA可能会对此类证书收取更高的费用。)
答案 1 :(得分:3)
这是不可能的。由于主机头仅在建立SSL连接后发送,因此服务器无法提供SSL证书,具体取决于主机。
Server Name Indication尝试解决此问题,但未在所有浏览器上实施。
答案 2 :(得分:3)
您需要为每个SSL域使用单独的IP地址。您可以在具有IP:端口组合的VirtualHost上将SSLCertificateFile
设置为自己。
HTTPS的限制是您选择一个证书以确保连接在客户端传递Host:
请求标头之前发生(必须,因为标头也是加密的) 。因此,每个IP地址不能有多个主机名(通配符证书除外,并且只提供子域名)。
称为SNI的SSL扩展可解决此问题,但浏览器支持目前还不足以考虑公开部署。