Двойной стек Lighttpd без повторной настройки SSL

Двойной стек Lighttpd без повторной настройки SSL

Я тестирую Lighttpd и столкнулся с небольшой, но очень раздражающей проблемой: конфигурация IPv6 — это полный беспорядок, и вам приходится дважды дублировать настройки SSL;посмотреть на себя:

# 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

Кто-нибудь знает, как этого избежать? Я бы сказал, что если бы такой способ был, он был бы в документации, но, увидев, как пустые условные блоки могут использоваться для привязки к дополнительным сокетам, я бы не удивился, если бы существовал какой-то другой «волшебный» и недокументированный метод достижения того, что мне нужно.

Я пробовал несколько комбинаций настроек server.bindлибо [::], либо 0.0.0.0, устанавливая условные операторы [::]:443либо 0.0.0.0:443просто :443, но всегда получалось так, что один из сокетов HTTPS отсутствовал, либо по IPv4, либо по IPv6 в зависимости от комбинации (не могу опубликовать точные результаты, я их не отслеживал, а повторное проведение тестов довольно утомительно).

решение1

Вы можете использовать переменные и включать конфигурацию из файлов, см.Синтаксис файла конфигурации для основного модуля. Мы можем использовать последний вариант здесь:

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

и затем выполните настройку в 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" 

Связанный контент