Dual stack Lighttpd sem repetir a configuração SSL

Dual stack Lighttpd sem repetir a configuração SSL

Estou testando o Lighttpd e me deparei com um problema pequeno, mas muito chato; a configuração do IPv6 é uma bagunça total e exige que você duplique as configurações de SSL duas vezes;Veja por si mesmo:

# listen to ipv4
server.bind = "0.0.0.0" 
server.port = "80" 

# listen to ipv6
$SERVER["socket"] == "[::]:80" {  }

# if you need ssl
$SERVER["socket"] == "0.0.0.0:443" { <here your ssl options> }
$SERVER["socket"] == "[::]:443" { <here your ssl options again> } // sadness

Alguém sabe uma maneira de evitar isso? Eu diria que se existisse tal maneira, estaria na documentação, mas depois de ver como blocos condicionais vazios podem ser usados ​​para vincular a soquetes adicionais, não ficaria surpreso se houvesse algum outro método "mágico" e não documentado para conseguir o que quero.

Eu tentei várias combinações de configuração server.bindpara [::]ou 0.0.0.0, definindo as condicionais para [::]:443, 0.0.0.0:443ou simplesmente :443, mas sempre acabei com um dos soquetes HTTPS faltando, seja por IPv4 ou IPv6, dependendo da combinação (não é possível postar os resultados exatos , não os acompanhei e refazer os testes é bastante chato).

Responder1

Você pode usar variáveis ​​e incluir configurações de arquivos, vejaSintaxe do arquivo de configuração para o módulo principal. Podemos usar o último aqui:

$SERVER["socket"] == "0.0.0.0:443" { include "ssl.conf" }
$SERVER["socket"] == "[::]:443" { include "ssl.conf" }

e depois faça a configuração em ssl.conf:

ssl.engine  = "enable"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
ssl.pemfile = "/etc/ssl/private/example.pem" 
ssl.ca-file = "/etc/ssl/certs/example.crt" 

informação relacionada