首先生成自我签名的证书,关于如何使用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客户端简单支持ssl相关推荐

  1. cxf开发实践(添加SSL支持)

    原文 http://www.newsmth.net/pc/pccon.php?id=10002535&nid=340064 1 SSL概述 安全套接层(SSL)及其新继任者传输层安全(TLS) ...

  2. 最简单的dockerfile使用教程 - 创建一个支持SSL的Nginx镜像

    什么是dockerfile?简单的说就是一个文本格式的脚本文件,其内包含了一条条的指令(Instruction),每一条指令负责描述镜像的当前层(Layer)如何构建. 下面通过一个具体的例子来学习d ...

  3. Nginx环境搭建与搭建支持SSL的虚拟主机

    一.Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramb ...

  4. Nginx系列之支持SSL认证

    在了解Nginx支持SSL认证前,先来看看SSL相关的基础概念.SSL是指安全套接字层,简而言之,它是一项标准技术,可确保互联网连接安全.TLS(传输层安全)是更为安全的升级版SSL.由于SSL这一术 ...

  5. 基于boost asio实现的支持ssl的通用socket框架

    情景分析    现已存在一个可用稳定的异步客户端类http_client_base,该类基于boost asio实现了连接服务器,发送请求,获取响应和解析http数据等操作,该类的大致实现框架如下   ...

  6. mysql客户端不支持_MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端...

    MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端 我是node.js和MySQL初学者,我刚开始设置并尝试一些基本代码.但是,由于某种原因,我甚至无法与服务器建 ...

  7. 怎样看mysql是不是支持SSL_mysql是如何支持ssl通信的?

    MySQL是如何生成sslZ证书和密钥的呢?下面让我们来看看,在mysql数据库中,是支持ssl通信的,但是呢,需要先生成证书和密钥才可以. MySQL支持SSL通信,不过需要自行生成所需要的证书和密 ...

  8. 让apache支持ssl

    让apache支持ssl 环境: redhat9 apache2.0.54 apache的编译参数 ./configure --prefix=/usr/local/apache2 --with-lay ...

  9. webservice概述及cxf在Java开发中应用(三) cxf客户端开发

    cxf客户端的开发非常的简单,它本身提供了客户端生成工具,我们可以轻松地生成客户端进行调用. 首先我们找到下载cxf包bin目录,在这里有一个批处理命令,wsdl2Java,通过这个命令可以生成cxf ...

最新文章

  1. PHP中的PathInfo
  2. mysql定时备份并上传ftp_Linux下定时任务实现mysql自动备份并上传远程ftp
  3. android_N项目(高通平台 CTS修改总结
  4. Spring Cloud——Spring Cloud Alibaba 2021 Nacos Config bootstrap 配置文件失效解决方案
  5. float浮动,定位
  6. 让我的 .NET Core 博客系统支持 Docker
  7. 【CF1230E】Kamil and Making a Stream【GCD性质】【暴力vector】
  8. Python入门基础篇(一)列表,详细实用,简单易懂!!!!
  9. oracle 实现 自增主键功能
  10. 11.05T3 map
  11. 强化学习组队学习task05—— 稀疏奖励及模仿学习
  12. 【参数辨识】六关节机械臂动力学参数辨识(上)
  13. 孙鑫MFC笔记之十三--多线程编程
  14. 饿了么风神系统手机版_数字技术带来平等工作机会 饿了么智能调度系统助力残障骑手少跑路多接单...
  15. 将.sql文件导入数据库
  16. 程序员吐槽的“面试造火箭、工作拧螺丝”,用应聘司机的场景还原当下奇葩的面试
  17. ENSP端口角色和状态
  18. vue使用axios配置多域名
  19. 深入理解JVM-内存模型(jmm)和GC
  20. 跨考西电计算机科学与技术研究生经验贴,西安交通大学912计算机133分经验分享...

热门文章

  1. 基于python的界面自动化测试-基于python的接口自动化测试+ddt数据驱动
  2. python turtle画熊-Python使用turtle库绘制小猪佩奇(实例代码)
  3. python装饰器类-Python装饰器15-开始使用类作为装饰器
  4. python写学生系统-用python编写学生管理系统
  5. java和python的比较-java 和 python的一些对比
  6. python课程内容-Python自学难吗?有哪些课程内容?
  7. python爬虫正则表达式实例-python爬虫学习三:python正则表达式
  8. 学python需要什么基础知识-没学过Python先要学习哪些基础知识?
  9. python基础包括什么-Python基础教程 模块包含什么
  10. python读文件代码-简单了解Python读取大文件代码实例