[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]CXF调用HTTPS,需要私钥证书时,一直报错Authentication failed,

上一篇:[GDS]Travelport小备忘
下一篇:[备忘]日志文件太大,可能导致Cache过大,导致杀进程

添加日期:2020-1-19 21:18:56 快速返回   返回列表 阅读430次

现象:
调https地址,一直报错:javax.xml.ws.soap.SOAPFaultException: Authentication failed
该地址需要私钥证书,貌似证书没有生效

胡乱改了若干遍,毫无头绪。

后来,java命令加了-Djavax.net.debug=all,详细看了https的握手过程,

握手大概过程就是:
-----------
互相Hello一下,然后协商用什么算法加密数据。
然后服务端管客户端要证书。
客户端发证书过去,服务端找,看哪个合适,找到了就用证书,没找到就走没证书的流程
---------------------
好使的那个程序:在
*** ServerHelloDone 阶段,服务端返回了
matching alias: client

这里的client是客户端私钥的别名。
keytool -v -list -keystore 你的客户端证书.jks
可以看别名。
---------------------
不好使的程序:返回了Warning: no suitable certificate found - continuing without client authentication
---------------------
所以,想到是程序没有找到私钥。
突然想起keyStore和trustStore区别来。

keyStore是告诉JVM,客户端私钥在哪。
trustStore是告诉JVM,服务端的公钥再哪。


加上以下两句:
System.setProperty("javax.net.ssl.keyStore",  "D:\\AAAAAAAA\\myClient.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "123456");

瞬间好使了。
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved