Я должен включить параметр ssl.verifyclient. * Для одной конечной точки веб-сайта, чтобы продолжить вход в систему или проверку сертификата. Но это не работает.
Конфигурация:
$HTTP["host"] =~ "^(.*\.|)example.com$"{
$SERVER["socket"] == ":443" {
protocol = "https://"
ssl.engine = "enable"
ssl.disable-client-renegotiation = "disable"
#server.name = "example.com"
ssl.pemfile = "/etc/lighttpd/ssl/example.com.pem"
ssl.ca-file = "/etc/lighttpd/ssl/bundle-ca.pem"
ssl.honor-cipher-order = "enable"
#ssl.cipher-list = "ECDHE-RSA-AES256-GCM-SHA384"
#ssl.use-compression = "disable"
setenv.add-response-header = (
"Strict-Transport-Security" => "max-age=63072000; includeSubDomains; preload",
"X-Frame-Options" => "DENY",
"X-Content-Type-Options" => "nosniff"
)
ssl.use-sslv2 = "enable"
ssl.use-sslv3 = "enable"
ssl.read-ahead = "enable"
#ssl.disable-client-renegotiation = "disable"
# It Works
$HTTP["host"] == "ssl.example.com"{
server.name = "ssl.example.com"
#ask for client cert
ssl.verifyclient.activate = "enable"
ssl.verifyclient.enforce = "enable"
ssl.verifyclient.exportcert = "enable"
#ssl.verifyclient.username = "SSL_CLIENT_S_DN_CN"
ssl.verifyclient.depth = 3
}
# It not Works
$HTTP["url"] =~ "/backend/server/auth/ssl" {
#ask for client cert
ssl.verifyclient.activate = "enable"
ssl.verifyclient.enforce = "disable"
ssl.verifyclient.exportcert = "enable"
#ssl.verifyclient.username = "SSL_CLIENT_S_DN_CN"
ssl.verifyclient.depth = 10
}
}
}
Это ошибка или несоответствие конфигурации?
Не может работать. SSL согласовывается перед отправкой на сервер любых HTTP-запросов.
При согласовании SSL-соединения клиент отправляет имя виртуального хоста, используя функцию SNI в SSL. Проверка клиента также происходит во время согласования SSL-соединения.
Только после того, как сеанс SSL будет установлен, клиент отправит веб-серверу запрос «GET / path / to / resource».
Вам необходимо применить проверку клиента для всего домена.