我们有一个web应用程序,托管多个网站为我们的客户在不同的域名。所有这些域都托管在单个apache vhost上,不同站点的逻辑分离是由软件完成的。
我们想为这些虚拟网站中的一些提供ssl支持。原则上这应该没有问题,因为在建立ssl连接后,软件可以使用host:头来路由到正确的网站。
但是:如何让apache根据所请求的主机提供正确的证书?
是否有可能将证书映射到域,例如,使用以下内容:
SSLCertificateFile文件
感谢所有的帮助!
发布于 2010-09-30 17:51:17
除了@bobince所说的之外,您还可以在主题备用名称扩展中使用多个DNS条目,在同一证书中使用多个主机名(不一定使用通配符或子域)。(对于此类证书,CA可能会收取更高的费用)。
发布于 2010-09-30 17:45:57
这是不可能的。由于主机标头仅在建立SSL连接后发送,因此服务器不能根据主机提供SSL证书。
Server Name Indication试图解决这个问题,但并不是在所有浏览器上都实现。
发布于 2010-09-30 17:46:30
您需要为每个SSL域使用单独的IP地址。您可以在具有IP:port组合的VirtualHost上设置SSLCertificateFile on。
HTTPS的一个限制是,在客户端传递Host:请求标头之前,您必须选择一个证书来保护连接(它必须这样做,因为标头也是加密的)。因此,每个IP地址不能有多个主机名(通配符证书除外,这只能提供子域)。
一个叫做SNI的SSL扩展可以解决这个问题,但是目前浏览器的支持还不够好,不能考虑用于公共部署。
https://stackoverflow.com/questions/3829406
复制相似问题