Конфигурация lighttpd - выполняет ли lighttpd аутентификацию по адресу, например subjectAltNames=IP:192.168.1.20?
Ниже приведен тестовый параметр для проверки того, будет ли lighttpd выполнять аутентификацию на основе IP-адреса, когда он включен в сертификат subjectAltNames, например
subjectAltNames = IP: 192.168.1.20
Config:
$HTTP["host"] == "192.168.1.20" {
# Ensure the Pi-hole Block Page knows that this is not a blocked domain
setenv.add-environment = ("fqdn" => "true")
# Enable the SSL engine with a LE cert, only for this specific host
$SERVER["socket"] == ":443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/Pihole-Home-Lan/private/Pihole-Home-Lan.key-crt.pem"
# ssl.ca-file = "/etc/lighttpd/ssl/Pihole-Home-Lan/public/Pihole-Home-Lan-fullchain.pem"
ssl.ca-file = "/etc/lighttpd/ssl/Pihole-Home-Lan/public/Home-Lan.crt.pem"
ssl.honor-cipher-order = "enable"
ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"
ssl.use-sslv2 = "disable"
ssl.use-sslv3 = "disable"
# client side authentification
ssl.verifyclient.activate = "enable"
ssl.verifyclient.enforce = "enable"
ssl.verifyclient.depth = "10"
ssl.verifyclient.username = "SSL_CLIENT_S_DN_CN"
## ssl.verifyclient.username = "SSL_CLIENT_S_DN_emailAddress"
}
# Redirect HTTP to HTTPS
$HTTP["scheme"] == "http" {
$HTTP["host"] =~ ".*" {
url.redirect = (".*" => "https://%0$0")
}
}
}
Линия от /var/log/lighttpd/access.log
при доступе по необработанному адресу 192.168.1.20
:
1551209819|192.168.1.20|GET / HTTP/1.1|401|351
Браузер показывает 401 Не авторизован. Это сбой SSL или есть другая проблема?
1 ответ
$SERVER["socket"] == ":443" { ... }
(или же
$SERVER["socket"] == "192.168.1.20:443" { ... }
) относится к верхнему уровню конфигурации. Ошибочно помещать внутрь другие условия конфигурации lighttpd, т.е. ошибочно помещать внутрь
$HTTP["host"] == "192.168.1.20" { ... }
TLS согласовывается в начале подключения к сокету, прежде чем HTTP-запрос будет получен по зашифрованному каналу TLS. Поскольку HTTP-запрос
Host
заголовок не был получен при согласовании TLS, недопустимо помещать
$SERVER["socket"]
внутри любого другого состояния, такого как
$HTTP["host"]