我可以使用 Lighttpd 为虚拟主机设置多个 SSL 证书吗?

我可以使用 Lighttpd 为虚拟主机设置多个 SSL 证书吗?

我可以使用 Lighttpd 网络服务器为虚拟主机设置多个 SSL 证书吗?

我的服务器上有多个网上商店(每个网上商店都有自己的域名),我需要为每个网上商店设置一个 SSL 证书。

谢谢帕特里克

答案1

请看一下Lighttpd 的 SNI,Lighttpd 自 1.4.24 版开始支持服务器名称指示,这将允许每个 ip 为 SSL 设置多个 vhost,正如浏览器支持尽管包括 XP 上的 IE,但仍受到限制。

旧答案:您只能为您使用的每个 IP/端口对设置一个 SSL 证书。如果您有一个 IP 地址和同一 IP 地址上的多个虚拟主机,则除非您获得一个包含所有虚拟主机/域的 SAN 证书,否则它将不起作用。这会很昂贵。

存在此限制的原因是 Web 服务器需要解密 SSL 请求才能查看客户端尝试访问的主机。这将使用绑定到该端口的 SSL 证书来完成。然后,客户端将获得与客户端期望的主机/域不匹配的其他证书。

这会导致客户端出现各种安全警告。

答案2

使用信噪比是实现此目的的方法。下面是一个简单的示例:

$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"
}

请记住,并非所有浏览器都支持此功能。

相关内容