我们有一个应用程序,使用JAX-RPC客户端库,并在旧版本的Java(1.4.2)上运行,出现以下SSL错误:
这在我们之前起过作用,客户端库的唯一更改涉及身份验证协议,并需要更新到最新版本的BouncyCastle。这些更改都在比SSL协议更高的层面上进行,而此错误似乎甚至与BouncyCastle无关。
有人以前看到过这样的错误吗?或许有什么想法或建议?我尝试将证书添加到cacerts。如果对Java 1.6运行,则可以正常工作,但是不幸的是,目前正在运行它的生产系统仍然与Java 1.4绑定。
此外,我们的JAX-RPC代码及其执行的身份验证一直可以正确地工作,如果没有SSL连接到我们的开发系统。
[编辑 - 额外信息] 现在我可以看到较新版本的BouncyCastle存在冲突导致该问题。我尝试使用古老的(1.18)版本,似乎没有收到SSL错误,但是因为应用程序需要更新的算法而得到了错误结果。
java.lang.NoClassDefFoundError
javax.crypto.Cipher.a(DashoA6275)
javax.crypto.Cipher.getInstance(DashoA6275)
com.sun.net.ssl.internal.ssl.SunJSSE_i.a(DashoA12275)
com.sun.net.ssl.internal.ssl.CipherBox$JCECipherBox.<init>(DashoA12275)
com.sun.net.ssl.internal.ssl.CipherRC4.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_h.a(DashoA12275)
com.sun.net.ssl.internal.ssl.CipherSuite$BulkCipher.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_ax.c(DashoA12275)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.f(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_az.j(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_az.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SunJSSE_ax.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.a(DashoA12275)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.j(DashoA12275)
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(DashoA12275)
sun.net.www.protocol.https.HttpsClient.afterConnect(DashoA12275)
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(DashoA12275)
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:569)
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(DashoA12275)
com.sun.xml.rpc.client.http.HttpClientTransport.writeMessageToConnection(HttpClientTransport.java:278)
com.sun.xml.rpc.client.http.HttpClientTransport.invoke(HttpClientTransport.java:64)
com.sun.xml.rpc.client.StreamingSender._send(StreamingSender.java:69)
[ ... trace continues into internal application code ... ]
这在我们之前起过作用,客户端库的唯一更改涉及身份验证协议,并需要更新到最新版本的BouncyCastle。这些更改都在比SSL协议更高的层面上进行,而此错误似乎甚至与BouncyCastle无关。
有人以前看到过这样的错误吗?或许有什么想法或建议?我尝试将证书添加到cacerts。如果对Java 1.6运行,则可以正常工作,但是不幸的是,目前正在运行它的生产系统仍然与Java 1.4绑定。
此外,我们的JAX-RPC代码及其执行的身份验证一直可以正确地工作,如果没有SSL连接到我们的开发系统。
[编辑 - 额外信息] 现在我可以看到较新版本的BouncyCastle存在冲突导致该问题。我尝试使用古老的(1.18)版本,似乎没有收到SSL错误,但是因为应用程序需要更新的算法而得到了错误结果。