2016-07-11 2 views
1

Я использую Apache Camel 2.17.1, и у меня есть некоторые проблемы с настройкой аутентификации клиента SSL на компоненте Jetty (http://camel.apache.org/jetty.html). Первая часть с сервером SSL работает плавно (настройка серверного хранилища ключей и доступ к конечной точке HTTPS из браузера). Теперь я пытаюсь обогатить приложение, добавив еще один маршрут (с другим http-портом), где требуется сертификат клиента.Как настроить соединитель Jetty SSL с Camel 2.17+

Из документации, это может быть достигнуто, поскольку свойства SSL не подвергаются непосредственно Camel:

<bean id="jetty" class="org.apache.camel.component.jetty.JettyHttpComponent"> 
<property name="sslSocketConnectors"> 
    <map> 
     <entry key="8043"> 
      <bean class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> 
       <property name="password"value="..."/> 
       <property name="keyPassword"value="..."/> 
       <property name="keystore"value="..."/> 
       <property name="needClientAuth"value="..."/> 
       <property name="truststore"value="..."/> 
      </bean> 
     </entry> 
    </map> 
</property> 

Это швы как документация не была обновлена, потому что эти имена полей больше не существует в SslContextFactory. Мне удается найти других кандидатов, но получил ошибку:

"org.eclipse.jetty.server.ssl.SslSelectChannelConnector" class doesn't exist anymore. 
The JettyHttpComponent.setSslSocketConnectors() method accepts Connector interface objects. 

Может кто-нибудь помочь мне в поиске решения на основе новых версий Apache Camel (как 2,17)?

+1

Похоже, [Camel 2.17 использует новые соединители Jetty 9] (https://github.com/apache/camel/blob/camel-2.17.1/components/camel-jetty-common/src/main/java /org/apache/camel/component/jetty/JettyHttpComponent.java#L623-L629), и документация для него не была обновлена. (Примечание: 'SslSelectChannelConnector' является старым классом для Jetty 8 и старше) –

ответ

0

Вы пытались использовать альтернативный подход, который также упоминается в документации:

<camel:sslContextParameters id="sslContextParameters"> 
    <camel:keyManagers keyPassword="keyPassword"> 
     <camel:keyStore 
      resource="https://stackoverflow.com/users/home/server/keystore.jks" 
      password="keystorePassword"/> 
    </camel:keyManagers> 
</camel:sslContextParameters> 

<from uri="jetty:https://127.0.0.1/mail/?sslContextParametersRef=sslContextParameters"/> 

Конечно, это требует, чтобы указать параметр sslContextParametersRef в ваших URI, но он должен работать.