系统需要访问微信支付,需要用到证书,另外需要访问一个保险接口,也需要用到证书。 结果总是出现证书冲突。
第一个调用的就可以顺利通过。
如果第一个调用微信支付,微信支付可以通过,但是保险接口就不能用了,报找不到证书。
如果第一个调用保险接口,微信支付接口就报找不到证书。访问微信支付接口的部分代码:
try { // 代码如下:修改证书路径跟密码即可 KeyStore keyStore = KeyStore.getInstance("PKCS12");
String cert_path = magicHelper.getProperty("wx.CERT");
String password = magicHelper.getProperty("wx.PARTNER"); FileInputStream instream = new FileInputStream(new File(
cert_path == null ? "E://temp//zcb//apiclient_cert.p12"
: cert_path)); keyStore.load(instream, password.toCharArray()); instream.close(); SSLContext sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, password.toCharArray()).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslcontext,
new String[] { "TLSv1" },
null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
访问保险接口的:
String chinaLifeKeyPath = magicHelper.getProperty("chinalifekey.path");
System.setProperty("javax.net.ssl.trustStore",
chinaLifeKeyPath+"server.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "12345678");
// System.setProperty("javax.net.ssl.keyStore",
// "D:/temp/chezhan.jks");
System.setProperty("javax.net.ssl.keyStore",
chinaLifeKeyPath+"eshop_test.pfx");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStorePassword", "123456"); System.setProperty("https.protocols", "TLSv1,SSLv3");
请各位大拿指导!
第一个调用的就可以顺利通过。
如果第一个调用微信支付,微信支付可以通过,但是保险接口就不能用了,报找不到证书。
如果第一个调用保险接口,微信支付接口就报找不到证书。访问微信支付接口的部分代码:
try { // 代码如下:修改证书路径跟密码即可 KeyStore keyStore = KeyStore.getInstance("PKCS12");
String cert_path = magicHelper.getProperty("wx.CERT");
String password = magicHelper.getProperty("wx.PARTNER"); FileInputStream instream = new FileInputStream(new File(
cert_path == null ? "E://temp//zcb//apiclient_cert.p12"
: cert_path)); keyStore.load(instream, password.toCharArray()); instream.close(); SSLContext sslcontext = SSLContexts.custom()
.loadKeyMaterial(keyStore, password.toCharArray()).build(); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslcontext,
new String[] { "TLSv1" },
null, SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
访问保险接口的:
String chinaLifeKeyPath = magicHelper.getProperty("chinalifekey.path");
System.setProperty("javax.net.ssl.trustStore",
chinaLifeKeyPath+"server.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "12345678");
// System.setProperty("javax.net.ssl.keyStore",
// "D:/temp/chezhan.jks");
System.setProperty("javax.net.ssl.keyStore",
chinaLifeKeyPath+"eshop_test.pfx");
System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStorePassword", "123456"); System.setProperty("https.protocols", "TLSv1,SSLv3");
请各位大拿指导!
解决方案 »
- 棘手问题,高手进
- Struts动态验证框架可不可以用来验证普通ActionForm
- 运行没有错误 可是就是不能把图片保存到本地的文件夹内 怎么解决? (红线标出语句) 怎么改正啊?
- 牛人们请教你们个问题:怎么用JSP在IE中打开本地的.doc/.xls/.pdf并浏览啊
- 用javascript怎么给jsp里面的对象赋值啊?
- WebSphere6.0下spring 的上下文不能加载tomcat加载正常的问题
- jsp中导出已经生成好的excel,如果名字太长了,保存文件时会自动给你改文件名的问题
- 实习8个月,等到拿到毕业证才能转正该不该去
- jsp中文乱码问题(在线等待,谢谢)
- (高分悬赏)JSP对文件的操作到底需要那些东东???
- spring @PathVariable 获取不到值
- java项目部署的问题
//清理掉环境变量
System.out.println("清理掉环境变量");
System.clearProperty("javax.net.ssl.trustStore");
System.clearProperty("javax.net.ssl.trustStorePassword");
// System.setProperty("javax.net.ssl.keyStore", "D:/temp/chezhan.jks");
System.clearProperty("javax.net.ssl.keyStore");
System.clearProperty("javax.net.ssl.keyStoreType");
System.clearProperty("javax.net.ssl.keyStorePassword");
System.clearProperty("https.protocols");
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
求解
不知道这种请款有没有彻底的比较好的解决办法
这样就可以采用已经封装好的jar依赖 而不是还要自己冲头到尾写一遍