简体   繁体   English

camel:sslContextParameters未在http4连接中使用

[英]camel:sslContextParameters is not being used in an http4 connection

I've a problem trying to create an endpoint to a secured URL (it ask for a personal certificate), my goal is to create an internal service with the same input parameters and call to the external service with a valid certificate obtaining the response and redirecting it to the caller thus avoiding the caller to have a valid certificate. 我在尝试创建一个指向安全URL的端点时遇到问题(它要求输入个人证书),我的目标是创建一个具有相同输入参数的内部服务,并使用有效证书调用外部服务,以获取响应并将其重定向到呼叫者,从而避免了呼叫者拥有有效的证书。

here's my route: 这是我的路线:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:camel="http://camel.apache.org/schema/blueprint"
xmlns:cxf="http://camel.apache.org/schema/blueprint/cxf"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="   
http://www.osgi.org/xmlns/blueprint/v1.0.0 
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd    
http://camel.apache.org/schema/blueprint/cxf 
http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd    
http://camel.apache.org/schema/blueprint 
http://camel.apache.org/schema/blueprint/camel-blueprint.xsd">
    <cxf:cxfEndpoint address="/validate_nif/" id="validateNifEndpoint" serviceClass="validationservice.nif.ValidateNifEndpoint"/>
    <camel:sslContextParameters id="mySslContextParameters">
        <camel:keyManagers keyPassword="">
            <camel:keyStore password="XXXXX" resource="etc/certs/truststore.jks"/>
        </camel:keyManagers>
        <camel:clientParameters>
            <camel:secureSocketProtocols>
            <camel:secureSocketProtocol>SSLv3</camel:secureSocketProtocol>
            </camel:secureSocketProtocols>
        </camel:clientParameters>
    </camel:sslContextParameters>
<bean class="org.apache.camel.component.http4.HttpComponent" id="my-http4">
    <property name="sslContextParameters" ref="mySslContextParameters"/>
</bean>
<camelContext id="camelContext-83032cb1-6f93-4d6f-b22f-2cef908fcc8b" xmlns="http://camel.apache.org/schema/blueprint">
    <contextScan/>
    <route id="_route1" trace="true">
        <!-- route starts from the cxf webservice -->
        <from id="_from1" uri="cxf:bean:validateNifEndpoint"/>
        <!-- log input received -->
        <log id="_log1" message="Input: ${body}"/>
        <removeHeaders id="_removeHeaders1" pattern="CamelHttp*"/>
        <!-- call external service -->
        <to id="_to2" uri="my-http4://www1.agenciatributaria.gob.es/wlpl/BURT-JDIT/ws/VNifV1SOAP?sslContextParametersRef=mySslContextParameters&amp;proxyAuthHost=myproxy&amp;proxyAuthPort=8080&amp;proxyAuthScheme=http4"/>
        <!-- log answer from real web service -->
        <log id="_log2" message="Output: ${body}"/>
        <transform id="_transform1">
            <constant>OK</constant>
        </transform>
    </route>
</camelContext>
</blueprint>

The http4 component correctly parses the proxy settings but it seems not to parse the ssl settings: http4组件可以正确解析代理设置,但似乎无法解析ssl设置:

2017-06-14 13:48:40,237 | DEBUG | cxf/validate_nif | SendProcessor                    | 323 - org.apache.camel.camel-core - 2.17.0.redhat-630187 | >>>> Endpoint[my-http4://www1.agenciatributaria.gob.es/wlpl/BURT-JDIT/ws/VNifV1SOAP?proxyAuthScheme=http4&proxyAuthPort=8080&sslContextParametersRef=mySslContextParameters&proxyAuthHost=myproxy] Exchange[ID-010668-57070-1497438180654-4-6]
2017-06-14 13:48:40,242 | DEBUG | cxf/validate_nif | HttpProducer                     | 391 - org.apache.camel.camel-http4 - 2.17.0.redhat-630187 | Executing http GET method: http://www1.agenciatributaria.gob.es/wlpl/BURT-JDIT/ws/VNifV1SOAP?sslContextParametersRef=mySslContextParameters
2017-06-14 13:48:40,242 | DEBUG | cxf/validate_nif | RequestAddCookies                | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | CookieSpec selected: default
2017-06-14 13:48:40,242 | DEBUG | cxf/validate_nif | RequestAuthCache                 | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | Auth cache not set in the context
2017-06-14 13:48:40,242 | DEBUG | cxf/validate_nif | olingHttpClientConnectionManager | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | Connection request: [route: {}->http4://myproxy:8080->http://www1.agenciatributaria.gob.es:80][total kept alive: 3; route allocated: 1 of 20; total allocated: 3 of 200]
2017-06-14 13:48:40,247 | DEBUG | cxf/validate_nif | olingHttpClientConnectionManager | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | Connection leased: [id: 10][route: {}->http4://myproxy:8080->http://www1.agenciatributaria.gob.es:80][total kept alive: 2; route allocated: 1 of 20; total allocated: 3 of 200]
2017-06-14 13:48:40,247 | DEBUG | cxf/validate_nif | MainClientExec                   | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | Executing request GET http://www1.agenciatributaria.gob.es/wlpl/BURT-JDIT/ws/VNifV1SOAP?sslContextParametersRef=mySslContextParameters HTTP/1.1
2017-06-14 13:48:40,247 | DEBUG | cxf/validate_nif | MainClientExec                   | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | Target auth state: UNCHALLENGED
2017-06-14 13:48:40,247 | DEBUG | cxf/validate_nif | MainClientExec                   | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | Proxy auth state: UNCHALLENGED
2017-06-14 13:48:40,247 | DEBUG | cxf/validate_nif | headers                          | 392 - org.apache.httpcomponents.httpclient - 4.5.2 | http-outgoing-10 >> GET http://www1.agenciatributaria.gob.es/wlpl/BURT-JDIT/ws/VNifV1SOAP?sslContextParametersRef=mySslContextParameters HTTP/1.1

Any ideas on how to make it work? 关于如何使其运作的任何想法?

See https://camel.apache.org/manual/latest/camel-configuration-utilities.html Pay attention to: "secureSocketProtocol ( attribute )" So, maybe this would work: 请参阅https://camel.apache.org/manual/latest/camel-configuration-utilities.html注意:“ secureSocketProtocol( attribute )”因此,也许这可以工作:

<camel:sslContextParameters id="mySslContextParameters" secureSocketProtocol="SSLv3">
    <camel:keyManagers keyPassword="">
        <camel:keyStore password="XXXXX" resource="etc/certs/truststore.jks"/>
    </camel:keyManagers>
</camel:sslContextParameters>

For a very long time I tried to defeat the error in sending via https4. 很长时间以来,我试图克服通过https4发送的错误。 Everywhere advised to use: 建议在任何地方使用:

<camel:clientParameters>
    <camel:secureSocketProtocols>
        <camel:secureSocketProtocol>TLSv1.2</camel:secureSocketProtocol>
    </camel:secureSocketProtocols>
</camel:clientParameters>

A colleague advised to use the attribute secureSocketProtocol="TLSv1.2" and it worked. 一位同事建议使用属性secureSocketProtocol =“ TLSv1.2”,它可以正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM