我有两台笔记本电脑在它们上运行相同的项目。两个实例均配置为使用Java JDK 6(相同的次要版本)。但是,一台计算机无法连接到远程REST服务。通过使用-Djavax.net.debug=all
选项运行应用程序,我得出的结论是问题与ClientKeyExchange步骤有关,因为在有问题的笔记本电脑上不会发生此步骤。
A post in the IBM developer community建议“正在使用的硬件加密设备不在受支持的列表中”。但是我对“硬件加密设备”一无所知。
我可以说的是,通过-Djavax.net.debug=all
打印的“启用的密码套件”,“排除的密码套件”,“密码套件已设置为”列表在两台计算机上都是相同的。
使用JDK cacerts。
最佳答案
找到了解决方案。 Project使用的是JAX-RS,因此通过该框架进行了对外部服务的调用,因此,由于没有错误,因此我无法深入研究问题。因此,我尝试了不同的方法:尝试通过使用显示给我javax.net.ssl.HttpsURLConnection
的简单java.lang.NoClassDefFoundError: Could not initialize class javax.crypto.SunJCE_b
访问服务,因此我更改了local_policy.jar
和US_export_policy.jar
文件(由于@Charlie Could not initialize class javax.crypto.SunJCE_b)
我想我已经在第一台笔记本电脑上更改了政策限制,却忘了在新笔记本电脑上这样做。
关于java - ServerHelloDone之后不会发生ClientKeyExchange,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50269317/