Jetty требует SSL-сертификат клиента по URL - PullRequest
6 голосов
/ 14 января 2011

Я хотел бы запустить сервлет в Jetty на сайте HTTPS, для которого требуется сертификат клиента только для части сайта (определенных URL-адресов).Например:

https://example.com/someservlet/public - не требуется сертификат клиента https://example.com/someservlet/protected - требуется сертификат клиента

В Apache я могу сделать это, указав SSLVerifyClient require внутри <Directory> или <Location>, который вынуждает Apache пересмотреть SSL-соединение после выполнения запроса.

Я не хочу запускать Jetty, встроенный во что-либо еще, только в автономном режиме.Это возможно?Может ли сервлет вызвать это как-то напрямую?Это можно сделать через конфигурацию?

1 Ответ

3 голосов
/ 14 января 2011

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

Даже если вы можете использовать конфигурацию, которую вы пытаетесь достичь, проблематично, так как для нее требуется согласование SSLRenegotiationизменился около года назад из-за уязвимости безопасности.Поэтому новый метод выполнения SSLRenogitiation поддерживается только новыми клиентами, и иногда даже если он поддерживается, он не работает из-за ошибок.

Моя рекомендация для простого обходного пути: настройте Jetty для прослушивания двух портов SSL: Например, на 443 без аутентификации клиента HTTPS и на 8443 с требуемой аутентификацией клиента HTTPS.Затем сделайте ваш защищенный сервлет доступным только на 8443. Это не хорошее решение, но на 100% надежное, работает с Jetty и со всеми клиентами.

...