我可以使用 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"
}
请记住,并非所有浏览器都支持此功能。