如何使用Camel 2.17 +

时间:2016-07-11 11:35:38

标签: java ssl apache-camel jetty

我使用Apache Camel 2.17.1,在Jetty组件(http://camel.apache.org/jetty.html)上设置SSL客户端身份验证时遇到一些问题。服务器SSL的第一部分运行顺畅(设置服务器密钥库并从浏览器访问HTTPS端点)。现在,我尝试通过添加另一个需要客户端证书的路由(使用不同的http端口)来丰富应用程序。

从文档中可以看出,因为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 个答案:

答案 0 :(得分:0)

您是否尝试过使用替代方法,也在文档中提到:

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

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

当然,它要求您在URI中指定sslContextParametersRef参数,但它应该有效。