https4 apache camel дает имя хоста, не соответствующее субъекту сертификата, предоставленному узлом

Я пытаюсь установить https-соединение с Apache Camel в Spring DSL. следуя этому руководству: 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)

Теперь я вижу в сертификате, что это имя хоста не определено в теме. Я видел, что сертификаты нельзя редактировать, поэтому мой вопрос: как настроить этот код таким образом, чтобы он читал правильное имя хоста?


person K.Til    schedule 28.02.2019    source источник


Ответы (2)


Это дикая догадка, основанная на имеющейся информации, но попробуйте. CN вашего сертификата — axis-accc8ec51452, вы должны подключаться к этому имени хоста, а не my_ip_address.

Чтобы сопоставить имя хоста axis-accc8ec51452 с my_ip_address, либо обновите его в преобразователе DNS, либо добавьте в файл hosts (*nix: /etc/hosts | Windows: c:\Windows\System32\Drivers\etc\hosts)

person ShellDragon    schedule 28.02.2019

это было довольно неприятно, но с помощью @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>

и добавил это к моему URL:

https4://my_ip_adress?sslContextParametersRef=sslContextParameters&amp;x509HostnameVerifier=x509HostnameVerifier
person K.Til    schedule 04.03.2019