我使用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)的解决方案吗?
答案 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参数,但它应该有效。