我可以为使用Lighttpd Web服务器的虚拟主机设置多个SSL证书吗?
我在我的服务器上有几个网上商店(每个网上商店都有自己的域名),我需要为他们每个人设置一个SSL证书。
感谢Patrick
您只能为每个使用的ip / port对设置一个SSL证书。 如果您有一个IP地址和多个虚拟主机在同一个IP地址上,除非您获得SAN证书中包含的所有虚拟主机/域的SAN证书,否则它将不起作用。 这将变得昂贵。
这个限制的原因是Web服务器需要解密SSL请求来查看客户端试图访问哪个主机。 这将使用绑定到该端口的SSL证书完成。 然后客户端将获得不同于客户端期望的主机/域的不同证书。
这将导致客户端的各种安全警告。
更正:
请看Lighttpd SNI ,自1.4.24以来,Lighttpd支持服务器名称指示,如jae指出的那样,每个ip允许一个以上的虚拟主机。 浏览器的支持是有限的,虽然包括在XP上的IE
使用SNI是做到这一点的方法。 这里是一个简单的例子:
$HTTP["host"] == "www.domain1.com" { server.document-root = "/home/www/domain1.com/public" server.errorlog = "/var/log/lighttpd/domain1.com/error.log" accesslog.filename = "/var/log/lighttpd/domain1.com/access.log" server.error-handler-404 = "/index.php" ssl.pemfile = "/etc/lighttpd/certs/www.domain1.com.pem" }
如果您想要使用自己的SSL添加其他域,
$HTTP["host"] == "www.domain2.com" { server.document-root = "/home/www/domain2.com/public" server.errorlog = "/var/log/lighttpd/domain2.com/error.log" accesslog.filename = "/var/log/lighttpd/domain2.com/access.log" server.error-handler-404 = "/index.php" ssl.pemfile = "/etc/lighttpd/certs/www.domain2.com.pem" }
请记住,并非所有的浏览器都支持这一点。