我正在使用HTTPS连接到一个Web服务。我已经完成了我认为可以使它工作所需的一切工作,但最终我遇到了握手失败的问题。
我发现作为新用户,由于“垃圾邮件保护”,我不能发布超过2个链接-非常感谢stackoverflow……无论如何,这里有一个pastebin帖子的链接,其中包含所有拼写正确的链接……所以当我在这里写“link#1”时,它是对这些链接的引用:http://pastebin.com/y4zGNRC7
- 我使用HttpClient(对服务URL进行GET)和通过CXF代理实际调用Web服务来验证了相同的行为
- 我设置了密钥库和信任库-我尝试了“代码中”的方法(link#1)和设置系统属性-即System.setProperty(“javax.net.ssl.keyStore”,“mykeystore.jks”);
- SSL调试打开(javax.net.debug = all)
- SSL调试突出显示密钥库和信任库的内容(即看起来像java“知道它们”)-link#2
- 似乎存在一些客户端-服务器通信,但然后因某种原因而崩溃link#3
- 我成功地使用客户端和CA证书在浏览器(Chrome)中和使用openssl s_client连接到了服务器
- wireshark显示java的客户端-服务器交互较少(link#4),例如与Chrome(link#5)相比
另一个奇怪的事情是,当我设置密钥库时和不设置时似乎得到了相同的行为(唯一的区别是当我这样做时,密钥库内容会打印在控制台中,但仅此而已)。
我尝试通过谷歌搜索来解决这个问题,我看到了许多类似的帖子在stackoverflow上,但都没有帮助。 我尝试更改协议版本(“TLSv1”,“SSLv3”,甚至是奇怪的v2 Hello)。 任何帮助将不胜感激-也许有些基本的东西我可能忽视了……我变得绝望了… 谢谢
我在 Fedora Core 15(64位) 上运行 Java 1.6 更新版30。