Назад | Перейти на главную страницу

Двойной стек 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 в зависимости от комбинации (не могу опубликовать точные результаты, я не отслеживал их, и повторение тестов довольно раздражает).

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

$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"