我正在通过 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 调试会脱口而出 keystore 和 truststore 的内容(即看起来像 java“知道它们”)-link#2
- 似乎有一些客户端-服务器通信正在进行,但由于某种原因它崩溃了链接#3
- 我在浏览器(Chrome)和使用 openssl s_client 中使用客户端和 CA 证书成功连接到服务器
- wireshark 显示来自 java (link#4) 的客户端-服务器对话较少,例如来自 Chrome (link#5)
另一个奇怪的事情是,当我设置密钥库和不设置密钥库时,我似乎得到了相同的行为(唯一的区别是当我执行密钥库时,内容会打印在控制台中,仅此而已)。
我试着用谷歌搜索这个问题,我在 stackoverflow 上看到了很多类似的帖子,但没有任何帮助。我尝试更改协议版本(“TLSv1”、“SSLv3”,甚至是奇怪的 v2 Hello)。任何帮助将不胜感激 - 也许我可能忽略了一些基本的事情......我在这里变得绝望......谢谢
PS 我在 Fedora Core 15 (64bit) 上运行 java 1.6 update 30