`

如何让cxf客户端简单支持ssl

    博客分类:
  • JAVA
 
阅读更多

首先生成自我签名的证书,关于如何使用keytool生成证书网上文章很多,这里不做介绍。

假如我们生成好了mas3server.jks和mas3Trust.jks

先是服务器端tomcat的配置,这里clientAuth默认为false表示不需要双向验证,即服务器端不需要知道客户端的身份,故这里不用配置truststoreFile和truststorePass:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
               maxThreads="150" scheme="https" secure="true" 
               clientAuth="false" sslProtocol="TLS" 
               keystoreFile="conf/mas3server.jks" 
      keystorePass="ccc123" />

这里是cxf的webservice客户端,用spring管理,对应的只需在xml中配置对应的可信任证书即可,例如

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sec="http://cxf.apache.org/configuration/security" xmlns:http="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation=" 
http://cxf.apache.org/configuration/security
http://cxf.apache.org/schemas/configuration/security.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> 
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> 
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean"> 
  <property name="serviceClass" value="com.mas.service.webservice.DataSyncSkeleton" />
  <property name="address" value="https://localhost:8443/DataSync/DataSyncServer" />
</bean> 
<bean id="dataSyncSkeletonClient" class="com.mas.service.webservice.DataSyncSkeleton" factory-bean="clientFactory" factory-method="create" />

<!--*.http-conduit的*代表对所有创建的client生效,若需要自定义可查cxf官网--> 
<http:conduit name="*.http-conduit"> 
  <http:tlsClientParameters disableCNCheck="true"> 
   <sec:trustManagers> 
    <sec:keyStore type="JKS" password="ccc123" file="/tmp/mas3Trust.jks" /> 
   </sec:trustManagers> 
   <!--不需要双向认证 -->

    <!-- 
     <sec:keyManagers keyPassword="password"> 
            <sec:keyStore type="JKS" password="password" 
                 file="/tmp/ossServer.jks"/> 
        </sec:keyManagers> 
        --> 
   <sec:cipherSuitesFilter> 
    <!-- these filters ensure that a ciphersuite with export-suitable or null encryption is used, but exclude anonymous Diffie-Hellman key change as this is vulnerable to man-in-the-middle attacks -->
    <sec:include>.*_EXPORT_.*</sec:include> 
    <sec:include>.*_EXPORT1024_.*</sec:include> 
    <sec:include>.*_WITH_DES_.*</sec:include> 
    <sec:include>.*_WITH_NULL_.*</sec:include> 
    <sec:exclude>.*_DH_anon_.*</sec:exclude> 
   </sec:cipherSuitesFilter> 
  </http:tlsClientParameters> 
</http:conduit>

</beans>

若不是通过spring配置而直接在代码中设置,也比较简单:

//.....获得dataSyncSkeletonClient

org.apache.cxf.endpoint.Client client = ClientProxy.getClient(dataSyncSkeletonClient);  
    HTTPConduit conduit = (HTTPConduit) client.getConduit();  
     TLSClientParameters tlscp = conduit.getTlsClientParameters(); 
     if (tlscp == null) 
   tlscp = new TLSClientParameters(); 
     tlscp.setSecureSocketProtocol("SSL"); 
     try { 
   TrustManagerFactory factory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
   InputStream fp = ClassLoader.class.getResourceAsStream("mas3Trust.jks"); 
   KeyStore ks = KeyStore.getInstance("JKS"); 
   ks.load(fp, "ccc123".toCharArray()); 
   fp.close(); 
   factory.init(ks); 
   tlscp.setTrustManagers(factory.getTrustManagers());  
  } catch (Exception e) { 
   e.printStackTrace(); 
  } 
    conduit.setTlsClientParameters(tlscp);

//....对dataSyncSkeletonClient的调用底层网络传输均是通过ssl加密

分享到:
评论

相关推荐

    cxf客户端调用axis服务端流程

    本文将深入探讨如何使用CXF客户端调用Axis服务端的流程。 ### 一、了解CXF和Axis **CXF**(CXF: Composite eXtensible Framework)是一个开源的Java Web服务框架,它提供了多种方式来创建和使用Web服务,包括JAX-...

    基于SSL验证的Apache CXF客户端设计

    基于SSL验证的Apache CXF客户端设计 1,服务器端Tomcat配置SSL支持 2,服务器端Web Service接口设计 3,客户端访问设计,包括代码和配置文件 详情请看博客:...

    CXF实现SSL安全验证

    ### CXF实现SSL安全验证 在现代网络应用中,安全通信是至关重要的。Apache CXF 是一个开源项目,提供了一套强大的工具和服务框架,用于构建和开发基于标准的服务(如 Web Services)。本文将详细介绍如何使用 CXF ...

    Java webservice cxf客户端调用demo和服务端

    Java WebService CXF客户端调用和服务端的实现是企业级应用程序中常见的通信方式,它基于标准的SOAP(Simple Object Access Protocol)协议,提供了一种在分布式环境中交换信息的方法。CXF是一个开源框架,它简化了...

    CXF客户端启动过程

    【标题】:“CXF客户端启动过程详解” 【正文】: CXF(Apache CXF)是一个开源的Java框架,主要用于构建和服务导向架构(SOA)。它提供了丰富的API和工具,用于创建Web服务,既可以作为服务器端也可以作为客户端。...

    CXF实例源代码(客户端)

    8. **安全性**:CXF支持多种安全模型,包括基本认证、TLS/SSL加密、WS-Security等。理解并正确配置这些安全特性是确保数据安全的关键。 总的来说,这个"CXF实例源代码(客户端)"压缩包提供了一个学习如何使用CXF...

    cxf服务端和客户端所需jar包

    CXF提供了一套完整的安全框架,包括基本认证、SSL/TLS、WS-Security等。相关jar包如`cxf-rt-security.jar`和`cxf-rt-ws-policy.jar`处理这些安全机制。 6. **测试工具**: 在开发和测试阶段,CXF提供了诸如`cxf-...

    webservice cxf 客户端创建

    **创建Webservice CXF客户端的步骤如下:** **服务端项目准备:** 1. **引入Webservice库:** 首先,你需要下载Apache CXF的库。例如,你可以获取apache-cxf-2.7.6.zip,并将其解压缩。将解压后的`lib`目录中的...

    cxf-ssl:JBossWS-CXF SSL 客户端示例

    JBoss EAP 6 中的 #CXF SSL 客户端 这是一个展示如何设置 JBossWS CXF SSL 客户端的项目。 除此之外,它还展示了如何在 EAP 6 中自动安装 HTTPS 连接并配置独立客户端以使用 JBoss LogManager。 此示例将在客户端和...

    WebService开发客户端 cxf方式

    3. **构建客户端配置**:在CXF客户端中,通常需要配置客户端的地址、协议等信息。这可以通过XML配置文件或者Java代码实现。 4. **实例化客户端和服务调用**:生成的Java代码中会有服务接口和服务代理类。实例化代理...

    4.CXF安全访问之单向SSL或者双向SSL(三)

    `ws-client`这个文件可能包含了一个示例CXF客户端的配置或者代码,用于演示如何进行SSL配置。在实际应用中,可以参考这个例子来调整自己的项目设置。 对于源码分析,我们可以查看CXF源码中的`org.apache.cxf....

    cxf+spring+client

    在CXF客户端的上下文中,Spring MVC可以用来接收用户的请求,然后调用CXF客户端获取服务响应,再将结果返回给用户。Spring MVC的强项在于它的灵活性,可以轻松集成各种视图技术,如JSP、Thymeleaf或FreeMarker。 在...

    cxf https webservice

    3. **调用HTTPS Web Service**:使用CXF调用HTTPS Web Service,首先需要配置CXF客户端来支持SSL。这包括设置信任商店(Truststore)和密钥商店(Keystore),并指定相应的密码。此外,可能还需要处理证书验证问题,...

    使用cxf和spring开发基于https的webservice服务端以及客户端样例

    客户端开发相对简单,它通过CXF的WSClientAPI动态生成代理对象,调用远程服务。首先,我们需要设置HTTPS的信任管理器,信任服务端的证书。然后,通过JAX-WS的`Service`类和WSDL URL创建服务代理,并获取业务接口的...

    CXF应用整理(包括大文件上传MTOM、安全机制)

    CXF 支持多种安全机制,如基本认证、 Digest 认证、SSL/TLS 客户端认证、WS-Security 等。例如,你可以使用 UsernameTokenPolicy 来实现基于用户名和密码的身份验证: ```java ...

    apache-cxf-2.0.10.zip下载地址

    8. **安全特性**:包括WS-Security、SSL/TLS支持,可以实现身份验证、加密和消息完整性保护。 在"apache-cxf-2.0.10.zip"压缩包中,通常会包含以下内容: 1. **库文件**:包含了CXF运行所需的JAR文件,如cxf-api....

    cxf开发webservice客户端和服务器端文档

    cxf开发webservice客户端和服务器端 cxf(Apache CXF)是一款开源的WebService框架,用于开发webservice客户端和服务器端。它提供了许多有用的功能,如自动生成服务桩、客户调用桩和WSDL文档等,使得开发webservice...

    webservice(cxf)+ajax请求,客户端和服务器端

    【标题】:Web服务(CXF)+Ajax 请求:客户端与服务器端交互 【知识点详解】 Web服务在现代软件开发中扮演着至关重要的角色,它提供了不同系统间数据交换的标准方式。CXF 是一个流行的开源框架,用于创建和消费 ...

    WebService客户端

    在处理SSL(安全套接层)相关问题时,比如在文件“wbs_ssl”中可能涉及的内容,WebService客户端可能需要配置SSL上下文以支持HTTPS连接。这包括设置信任的证书库、处理自签名证书、配置SSL参数等。例如,在Java中,...

Global site tag (gtag.js) - Google Analytics