Java7和Java8之间的SSL不兼容?

Java7和Java8之间的SSL不兼容?,java,ssl,Java,Ssl,我们有一个在java 7上运行的服务器端进程: java-版本: java版本“1.7.0” Java(TM)SE运行时环境(构建1.7.0-b147) Java HotSpot(TM)64位服务器虚拟机(构建21.0-b17,混合模式) 它接受来自我们自己开发的java应用程序(通过正确签名的JNLP启动)的SSL连接 通常,无论客户机应用程序是在Java6还是Java7JVM中运行,这都像是一个梦 但是,当使用Java 8(从MAC)启动同一个客户端应用程序时,我们遇到了一个SSL问题,其中

我们有一个在java 7上运行的服务器端进程: java-版本: java版本“1.7.0” Java(TM)SE运行时环境(构建1.7.0-b147) Java HotSpot(TM)64位服务器虚拟机(构建21.0-b17,混合模式)

它接受来自我们自己开发的java应用程序(通过正确签名的JNLP启动)的SSL连接

通常,无论客户机应用程序是在Java6还是Java7JVM中运行,这都像是一个梦

但是,当使用Java 8(从MAC)启动同一个客户端应用程序时,我们遇到了一个SSL问题,其中服务器中断了连接(我们与wireshark进行了检查以确认),但出现以下异常: javax.net.ssl.SSLException:错误记录MAC 位于sun.security.ssl.Alerts.getSSLException(Alerts.java:208) 位于sun.security.ssl.sslenginimpl.fatal(sslenginimpl.java:1605) 位于sun.security.ssl.sslenginimpl.fatal(sslenginimpl.java:1573) 位于sun.security.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:971) 位于sun.security.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:876) 位于sun.security.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:750) 位于javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:624)

基于此,错误是特别模糊的。。。

MAC上的JVM版本: Java8更新45

我尝试过的事情:

  • 将其添加到JNLP(从 ):
  • 限制服务器上允许/不允许的密码:
SSLEngine引擎=getSslContext().createSSLEngine();
字符串[]avail=engine.getSupportedCipherSuite();
Set availableCiphers=newhashset(Arrays.asList(avail));
可用的密码。保留(好的密码);
engine.setEnabledChiperSuite(this.availableEciphers.toArray(新字符串[this.availableEciphers.size()])

  • 令人惊讶的是,在本地运行服务器进程时,使用 jdk1.6.0_20,此错误不会发生,并且一切正常

让我知道哪些附加信息将有助于找到此问题的原因/解决方案。

将服务器的JDK升级到最新的java7版本似乎已经解决了此问题