Можно ли использовать условие Lighttpd $ HTTP [«url»] для динамического включения параметра ssl.verifyclient. *?

Я должен включить параметр 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
        }
    }
}

Это ошибка или несоответствие конфигурации?

0
задан 7 April 2017 в 16:43
1 ответ

Не может работать. SSL согласовывается до того, как какие-либо HTTP-запросы отправляются на сервер.

При согласовании SSL-соединения клиент отправляет имя виртуального хоста, используя функцию SNI в SSL. Проверка клиента также происходит во время согласования SSL-соединения.

Только после того, как сеанс SSL был установлен, клиент отправит запрос «GET / path / to / resource» на веб-сервер.

Вам необходимо применить проверку клиента для весь домен.

1
ответ дан 4 December 2019 в 16:18

Теги

Похожие вопросы