代码之家  ›  专栏  ›  技术社区  ›  Ravi

使用servlet transport Jboss fuse 6.3公开https camel cxf webservice

  •  0
  • Ravi  · 技术社区  · 7 年前

    我想将camel-cxf-webservice公开为https我已经完成了以下配置,部署成功,但我的连接被拒绝 https://localhost:8443

    我的配置中是否缺少一些内容?

    Iam使用Jboss fuse 6.3、Jboss Eap 6.4、camel 2.17和JDK 1.8

    1)我使用以下命令创建了密钥库,并将其放置在C:\Temp\truststore中:

    keytool -genkey -keyalg RSA -sigalg SHA1withRSA -validity 730 -alias jbossfuse -keypass password -storepass password -keystore jbossfuse-dev.jks -dname cn=localhost
    

    2.)我已启用独立完整的https连接器。xml如下:

    <subsystem xmlns="urn:jboss:domain:web:2.2" default-virtual-server="default-host" native="false">
                <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
                <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
                    <ssl name="https" key-alias="trust" password="password" certificate-key-file="C:/Temp/truststore/jbossfuse-dev.jks"/>
                </connector>
                <virtual-server name="default-host" enable-welcome-root="true">
                    <alias name="localhost"/>
                    <alias name="example.com"/>
                </virtual-server>
            </subsystem>
    

    套接字绑定https:

        <socket-binding name="https" port="8443"/>
    

    4.)端点配置:

    <http:conduit name="*.http-conduit"
                    xmlns:sec="http://cxf.apache.org/configuration/security" xmlns="http://cxf.apache.org/transports/http/configuration">
                    <http:tlsClientParameters disableCNCheck="true">
                        <sec:trustManagers>
                            <sec:keyStore type="JKS" password="password"
                                file="C:\\Temp\\truststore\\jbossfuse-dev.jks" />
                        </sec:trustManagers>
                    </http:tlsClientParameters>
    </http:conduit>
    
    
    <cxf:cxfEndpoint id="authentication" xmlns:nms="http://tempuri.org/"
                address="/authenticationProxy"
                endpointName="nms:BasicHttpBinding_ITestAuthenticationService" 
                serviceName="nms:TestAuthenticationService"
                wsdlURL="wsdl/Authentication/Authentication.wsdl" loggingFeatureEnabled="true">
                <cxf:properties>
                    <entry key="dataFormat" value="PAYLOAD" />
                </cxf:properties>
    </cxf:cxfEndpoint> 
    

    5)骆驼路线xml:

    <route id="AuthInproxy">
                <from id="Authentication" uri="cxf:bean:authentication"/>
                <doTry id="_doTry1">
                    <to uri="direct:AuthInProvider"/>
                    <doCatch id="_doCatch1">
                        <exception>java.lang.Exception</exception>
                        <handled>
                            <constant>true</constant>
                        </handled>
                    </doCatch>
                </doTry>
      </route>
    

    网状物xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
               version="2.5">
        <display-name>ssl-cxf</display-name>
        <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:META-INF/spring/*.xml</param-value>
        </context-param>
    
        <listener>
            <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
    
      <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
      </servlet>
    
      <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/*</url-pattern>
      </servlet-mapping> 
    
    </web-app>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   James Netherton    7 年前

    看起来您在HTTPS连接器SSL配置(信任)上指定的密钥别名与创建密钥库(jbossfuse)时使用的别名不匹配。

    尝试使用:

    <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true">
        <ssl name="https" key-alias="jbossfuse" password="password" certificate-key-file="C:/Temp/truststore/jbossfuse-dev.jks"/>
    </connector>