我想让 lighttpd 使用 UCC 证书,但我似乎无法找到正确的语法。
本质上,对于每个 IP 地址,我都有一个 UCC 证书和一堆主机名。
$SERVER["socket"] == "10.0.0.1:443" {
ssl.engine = "enable"
ssl.ca-file = "/etc/ssl/certs/the.ca.cert.pem"
ssl.pemfile = "/etc/ssl/private/websitegroup1.com.pem"
$HTTP["host"] =~ "mywebsite.com" {
server.document-root = /var/www/mywebsite.com/htdocs"
}
上述代码对于一个主机名运行良好,但当我尝试设置另一个主机名(注意相同的 SSL 证书)时:
$SERVER["socket"] == "10.0.0.1:443" {
ssl.engine = "enable"
ssl.ca-file = "/etc/ssl/certs/the.ca.cert.pem"
ssl.pemfile = "/etc/ssl/private/websitegroup1.com.pem"
$HTTP["host"] =~ "anotherwebsite.com" {
server.document-root = /var/www/anotherwebsite.com/htdocs"
}
...我收到此错误:Duplicate config variable in conditional 6 global/SERVERsocket==10.0.0.1:443: ssl.engine
有什么方法可以设置条件,以便只有当ssl.engine
尚未启用时才启用它?或者我必须将所有 $HTTP["host"] 放在同一个 $SERVER["socket"] 中(这将使配置文件管理对我来说更加困难)还是有完全不同的方法可以做到这一点?
这也必须对多个 IP 重复进行(因此我会有一堆SERVER["socket"] == 10.0.0.2:443"
等等),每个 IP 都有一个 UCC 证书和许多主机名。
我是否完全以错误的方式处理这个问题?我的目标是,当我拥有许多相关且可以共享 SSL 证书的网站时,节省 IP 地址,但仍然需要从适当的主机名(而不是单个 secure.mywebsite.com)获取自己的 SSL 可访问版本。
答案1
所以你只需要更改每个主机的文档根目录?你试过把主机匹配外部套接字匹配并且不重复套接字节?例如
$SERVER["socket"] == "10.0.0.1:443" {
ssl.engine = "enable"
ssl.ca-file = "/etc/ssl/certs/the.ca.cert.pem"
ssl.pemfile = "/etc/ssl/private/websitegroup1.com.pem"
}
$HTTP["host"] =~ "mywebsite.com" {
server.document-root = /var/www/mywebsite.com/htdocs"
}
$HTTP["host"] =~ "anotherwebsite.com" {
server.document-root = /var/www/anotherwebsite.com/htdocs"
}