2017-02-03 20 views
0

sslConfig:Как настроить причал, чтобы запросить сертификат клиента для определенных ресурсов?

<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory"> 
    <Set name="KeyStorePath">../conf/jetty/etc/keystore</Set> 
    <Set name="KeyStorePassword">secretpass</Set> 
    <Set name="KeyManagerPassword">test</Set> 
    <Set name="TrustStorePath">../conf/jetty/etc/truststore</Set> 
    <Set name="TrustStorePassword">secretpass</Set> 
    <Set name="EndpointIdentificationAlgorithm"></Set> 
    <Set name="NeedClientAuth">true</Set> 
    <Set name="WantClientAuth">true</Set> 
</New> 

Установка NeedClientAuth истина требует клиента предоставить сертификат для всех ресурсов. Но в моем случае я хочу запросить сертификат только для определенных ресурсов.

Например, мне нужно запросить сертификат/resource1/* И использовать только HTTPS для/resource2/*

Как я могу добиться этого?

ответ

1

Невозможно, так как шаг согласования SSL/TLS происходит до того, как запрос действительно сделан.

Ни один веб-сервер не может применять различные правила SSL/TLS на основе запрашиваемого ресурса, поскольку информация, содержащаяся в HTTP-запросе, еще не была отправлена ​​во время переговоров SSL/TLS.

Если это важно, настройте 2 разных ServerConnectors на разных портах.

  1. ServerConnector с Client Auth - /resource1/* содержания подаются здесь
  2. ServerConnector без клиенты Auth - все других веб-ресурсов, которые не нужны требования клиента аутентификации (и даже не имеет /resource1/* содержания)