Lighttpd de doble pila sin repetir la configuración SSL

Lighttpd de doble pila sin repetir la configuración SSL

Estoy probando Lighttpd y me encontré con un problema pequeño pero muy molesto; la configuración de IPv6 es un desastre total y requiere que dupliques la configuración de SSL dos veces;ver por ti mismo:

# 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

¿Alguien sabe una manera de evitar eso? Yo diría que si existiera tal manera, estaría en la documentación, pero después de ver cómo se pueden usar bloques condicionales vacíos para vincularse a sockets adicionales, no me sorprendería si hubiera algún otro método "mágico" e indocumentado para lograr lo que quiero.

Probé varias combinaciones de configuración server.binden o [::], 0.0.0.0estableciendo los condicionales en [::]:443o 0.0.0.0:443simplemente :443, pero siempre terminaba sin uno de los sockets HTTPS, ya sea sobre IPv4 o IPv6 dependiendo de la combinación (no puedo publicar los resultados exactos , no les hice un seguimiento y rehacer las pruebas es bastante molesto).

Respuesta1

Puede utilizar variables e incluir configuración desde archivos, consulteSintaxis del archivo de configuración para el módulo principal. Podemos usar este último aquí:

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

y luego hacer la configuración en 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" 

información relacionada