https4 apache camel提供主机名与对等方提供的证书主题不匹配

时间:2019-02-28 12:27:29

标签: apache-camel apache-servicemix spring-dsl

我试图在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)

现在我可以在证书中看到该主机名未在主题中定义。我已经看到证书无法编辑,所以我的问题是如何调整此代码以使其读取正确的主机名?

2 个答案:

答案 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&amp;x509HostnameVerifier=x509HostnameVerifier