java webservice 证书_java调用基于https的webservice(不生成密钥,基于spring配置,接收所有证书)...
我的blog:个人博客
最近工作需要调用外部的webservice,之前一直搞的是基于http的ws,没啥好说的
网上很多教程。这次对方提供的接口是基于https的接口,在网上查找都是需要生成密钥,安全证书
等。各种纠结,生成密钥的方法网上都有介绍,我也了解了下,大致是这样的步骤:
第一步、导出服务器端证书。用ie连接地址,然后出现了证书确认的提示框,点击查看证书-详细信息,点击复制到文件,选择base64编码,导出保存文件为test.cert。 第二步、把证书从其它文件导入到TrustStore文件中。 keytool -import -file test.cer -keystore test_store 第三步、设置java的javax.net.ssl.trustStore的系统属性
System.setProperty(“javax.net.ssl.trustStore”, “D: \\test_store”);//注意是绝对路径
System.setProperty("javax.net.ssl.keyStorePassword", "abc");
这样通过应用接口就可以直接访问服务了。
如果基于spring配置的话,cxf官网也给出了例子:
配置如下:、
file="my/file/dir/Morpit.jks"/>
file="my/file/dir/Truststore.jks"/>
.*_EXPORT_.*
.*_EXPORT1024_.*
.*_WITH_DES_.*
.*_WITH_AES_.*
.*_WITH_NULL_.*
.*_DH_anon_.*
Betty
password
但我们不想搞成这种生成证书的方法 ,网上也有办法实现接收所有证书参考:
http://blog.sina.com.cn/s/blog_557c420e0100pyx7.html
核心的东西就是TrustManager类,自己实现X509TrustManager .
但例子都是基于httpclient的,到底如何配置spring呢,开始纠结了
spring配置webservice的基本例子
factory-bean="myServiceFactory" factory-method="create"/>
首先想到的是 将将TrustManger类替换掉成接收所有证书的TrustManager类,
但如何注入是个问题,最后想到拦截器,debug模式进去后果然发现了TrustManger
只需要将这个替换掉就ok,于是写一个interceptor,在spring配置:
myTrustInterceptor主要实现:
public void handleMessage(Message message) throws Fault {
System.out.println("我进来了");
HttpsURLConnectionImpl connection=(HttpsURLConnectionImpl)message.get("http.connection") ;
TrustManager[] myTMs = new TrustManager [] {
new MyX509TrustManager() };
SSLContext ctx = null;
try{
ctx = SSLContext.getInstance("SSL");
ctx.init(null, myTMs, new java.security.SecureRandom());
} catch (Exception e){ }
connection.setSSLSocketFactory(ctx.getSocketFactory());
connection.setHostnameVerifier(org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
// connection.setHostnameVerifier(hv);
System.out.println("我要出去了");
}
这样就可以直接调用服务了。
还有个想法是替换掉JaxWsProxyFactoryBean,实现自己的FactoryBean,这个没能实现,不知道各位看官有没有更好的想法呢?
java webservice 证书_java调用基于https的webservice(不生成密钥,基于spring配置,接收所有证书)...相关推荐
- WebService学习总结——调用第三方提供的webService服务
互联网上面有很多的免费webService服务,我们可以调用这些免费的WebService服务,将一些其他网站的内容信息集成到我们的Web应用中显示,下面就以获取天气预报数据.气象中心的管理系统将收集 ...
- java跳过_java跳过https证书直接请求工具类
/** * 过滤https协议 * @author edwin */ public class FiltratHttpsUtils { static HostnameVerifier hv = new ...
- asmx用java怎么调_java调用asmx的webservice
eclipse插件(axis2 tool--Code Generator Wizard)实现Java调用 asmx 的Web Service 一个获得天气情况及国家城市的 Web Service ht ...
- java webservice 天气预报_java 调用天气预报的webservice | 学步园
网上有很多例子,但我还是试了好多遍才走通,代码如下: import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; imp ...
- java sql函数_Java调用Sql存储过程实例讲解
1.使用不带参数的存储过程 使用 JDBC 驱动程序调用不带参数的存储过程时,必须使用 call SQL 转 义序列.不带参数的 call 转义序列的语法如下所示: {call procedure-n ...
- java 绘图 打印_java调用本地打印机,绘制打印模板,小票模板
文章目录 jar资源 绘制打印模板 import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java ...
- 虹软java接摄像头_Java调用虹软SDK的错误
虹软官网:https://www.arcsoft.com.cn/ 在用Java调用虹软SDK的时候需要注意的问题: 1.SDK版本 虹软的sdk分为LinuxX64.WindowsX86.Window ...
- java jama包_Java调用Jama包完成矩阵运算
Java开发机器学习算法的时候,经常用到矩阵运算,我们可以调用Jama包来完成矩阵运算. Jama包下载地址:https://dl.pandaidea.com/jarfiles/j/Jama/Jama ...
- java sqlserver 异常处理_Java代码SSL https 加密连接 sqlserver
3种连接sqlserver方式 URL 的区别: 1)jdbc:sqlserver://IP:port;DatabaseName=dbName;autoReconnectForPools=true; ...
最新文章
- 背包问题(多重背包+0-1背包)
- LeetCode 网易-2. 古老的游戏机
- 藏不住了,这就是阿里 AI 的真正实力!
- 《Ext JS权威指南》——1.2节JSON概述
- 货币市场基金的基本分类
- 贪心算法—圣诞老人的礼物(POJ 4110)
- 驾驭系统 做一个Windows XP的“***”(图)3
- NOIP2002-普及组复赛-第三题-选数
- hbase中为何不能向表中插入数据_Python自带的数据库,用起来真方便!
- qvodplayer.hta:按个人使用习惯自写易用的整合搜索资源的p2p电影搜索/播放程序(能自动升级)
- pycharm 修改darcual(暗黑)主题滚动条颜色
- 原生社区交友婚恋视频即时通讯双端APP源码ONE兔2.0版
- 《编程机制探析》第二章	计算机语言
- Excel图表制作(一):商务图表之甘特图
- Miracle密码算法开源库(十二)分析 :mrflsh3.c
- java faker_Java 生成测试字符串的库:Java Faker
- 云计算概念_云计算的概念
- 二维数组的四种创建方法
- 字体设计:拉丁字母字体书写方法分类
- powermock跳过某方法_如何使用powermock验证内部方法调用?