我试图在Spring DSL中与Apache骆驼建立一个https连接。遵循本教程:https://access.redhat.com/documentation/en-us/red_hat_jboss_fuse/6.2/html/apache_camel_component_reference/IDU-HTTP4
,还有:http://camel.apache.org/http4.html
我构造了以下代码:
<sslContextParameters id="sslContextParameters" xmlns="http://camel.apache.org/schema/blueprint">
<trustManagers>
<keyStore resource="keyStore/keyStore.jks" password="changeit"/>
</trustManagers>
</sslContextParameters>
和我的路线:
<route id="axis_camera">
<to uri = "https4://my_ip_adress?sslContextParametersRef=sslContextParameters"
</route>
和
<bean id="http-ssl" class="org.apache.camel.component.http4.HttpComponent">
<property name="sslContextParameters" ref="sslContextParameters"/>
</bean>
在apache servicemix上运行时,我得到:
javax.net.ssl.SSLPeerUnverifiedException: Host name my_ip_adress does not
match the certificate subject provided by the peer (CN=axis-accc8ec51452,
O=Axis Communications AB)
现在我可以在证书中看到该主机名未在主题中定义。我已经看到证书无法编辑,所以我的问题是如何调整此代码以使其读取正确的主机名?
答案 0 :(得分:1)
这是基于可用信息的一个疯狂猜测,请尝试一下。
您的证书CN为axis-accc8ec51452
,您应该连接到该主机名,而不是my_ip_address
。
要将主机名axis-accc8ec51452
映射到my_ip_address
,请在DNS解析器中对其进行更新,或将其添加到hosts
文件中(* nix:/etc/hosts
| Windows:{ {1}})
答案 1 :(得分:0)
这非常令人沮丧,但是在@ShellDragon的帮助下,我搜索了一个允许所有主机名的bean。这个bean是x509HostnameVerifier。所以在我的代码中,我在这里添加了它:
<bean id="http-ssl" class="org.apache.camel.component.http4.HttpComponent">
<property name="sslContextParameters" ref="sslContextParameters"/>
<property name="x509HostnameVerifier" ref = "x509HostnameVerifier"/>
</bean>
并将其添加到我的网址中:
https4://my_ip_adress?sslContextParametersRef=sslContextParameters&x509HostnameVerifier=x509HostnameVerifier