gpt4 book ai didi

java - 如何解决受信任证书上的 SSLHandshakeException?

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:47 25 4
gpt4 key购买 nike

我们有一个 JavaFX 应用程序在 https 安全资源上调用我们的后端。该应用程序连续向同一个 url 发出数百个请求,以从服务器获取数据。

这通常没有问题,但现在我们有一个客户在连接到资源时报告了 SSLHandshakeException 问题。他可以很好地完成数百个请求,而对于下一个请求,客户端会失败:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Java couldn't trust Server 
at sun.security.ssl.Alerts.getSSLException(Unknown Source)
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
at sun.security.ssl.Handshaker.processLoop(Unknown Source)
at sun.security.ssl.Handshaker.process_record(Unknown Source)
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.access$200(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$9.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessController.doPrivileged(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
at com.project.common.ws.client.HttpUrlConnectionRestClient.b(ProGuard:339)
at com.project.common.ws.client.HttpUrlConnectionRestClient.a(ProGuard:227)
at com.project.common.ws.client.HttpUrlConnectionRestClient.a(ProGuard:56)
at com.project.common.ws.client.HttpUrlConnectionRestClient.a(ProGuard:387)
at com.project.projects.map.client.manager.GeomanagerWorker.readGeocodingChunk(ProGuard:5640)
at com.project.projects.map.client.manager.n.readGeocodingChunk(ProGuard:4337)
at com.project.projects.map.client.manager.modules.fx.imports.b.nF(ProGuard:199)
at com.project.projects.map.client.manager.modules.fx.imports.b.call(ProGuard:174)
at javafx.concurrent.Task$TaskCallable.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.security.cert.CertificateException: Java couldn't trust Server
at com.sun.deploy.security.X509TrustManagerDelegate.checkTrusted(Unknown Source)
at com.sun.deploy.security.X509Extended7DeployTrustManagerDelegate.checkServerTrusted(Unknown Source)
at com.sun.deploy.security.X509Extended7DeployTrustManager.checkServerTrusted(Unknown Source)
... 30 more

我们的 SSL 证书由 GeoTrust SSL CA - G3 签署,有效期至 2016 年 12 月 13 日。客户客户端使用Java 1.8.0_40

我研究过不同的文章。 This有人说,这可能与证书域名区分大小写的错误有关。但是我们在证书和请求上都使用了全部小写,所以应该没问题。

This文章显示,问题可能与 Java 版本有关,因为“可能新的 Java 版本更严格地执行 SSL CA”。它还说,升级到最新的 Java 版本可能会解决问题。我还没有勾选这个选项,因为由于公司的 IT 限制,客户并不总是可以只升级 java 版本。

更重要的是,我们需要 Java 版本 1.8 才能运行,如果它不能与 1.8.0_40 版本一起工作,那就太糟糕了。

有谁知道这个问题是否有确切的原因?

最佳答案

我遇到了同样的问题。为了让 ASDM-IDM 连接器正常工作,我不得不降级到 Java 1.6。

关于java - 如何解决受信任证书上的 SSLHandshakeException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39507348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com