当前位置: 首页 > 知识库问答 >
问题:

Java URL连接javax.net.ssl.SSLHandShakeException[重复]

慕承允
2023-03-14

解决了-我通过将我的cacerts文件从我的windows机器复制到PI来解决它。

我正在编写一个应用程序,使用长轮询从Web服务器获取json字符串,该应用程序在我正在开发的windows机器上运行良好。然后我将源代码移到raspberry pi中并对其进行编译,现在它抛出了以下异常:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
            at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1917)
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:301)
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:295)
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1369)
            at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:156)
            at sun.security.ssl.Handshaker.processLoop(Handshaker.java:925)
            at sun.security.ssl.Handshaker.process_record(Handshaker.java:860)
            at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1043)
            at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
            at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1371)
            at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1355)
            at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
            at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1511)
            at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
            at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
            at VideoBoard.main(VideoBoard.java:29)
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
            at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
            at sun.security.validator.Validator.validate(Validator.java:260)
            at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
            at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
            at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1351)
            ... 13 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:145)
            at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
            at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
            ... 19 more

我的网站是由GoDaddy托管的,他们也提供SSL证书。当通过浏览器或java从我的桌面访问站点时没有任何问题,并且所有迹象表明SSL证书是有效的,并且被我的机器信任。

共有1个答案

桓兴腾
2023-03-14

您在Raspberry Pi上使用的操作系统在您在服务器上使用的证书路径中没有受信任的证书。换句话说,Pi不知道要相信您的服务器是它所说的那样。

要修复此问题,您需要在PI上安装GoDaddy的根证书。如果您使用的是Raspbian或其他Debian派生的OS,这里有一篇关于如何做到这一点的好文章,这里是GoDaddy的证书存储库。

 类似资料:
  • 这是一个独立的多线程核心java应用程序,它使用httpclient-4.0-beta1.jar进行连接。 当尝试连接到客户端url时出现以下异常,我需要发送请求。 我使用下面的配置通过shell脚本运行这个,一开始我尝试用代理执行,但之后我也配置了代理,但仍然存在同样的问题。任何在thsi方面的帮助都将非常感谢。

  • 有人知道我的配置代码有什么问题吗?我只是一个PHP初学者,所以这里是我的错误 致命错误:未捕获错误:调用C:\XAMPP\htdocs\gas\u php\config.php:10中未定义的函数mysql\u connect() 堆栈跟踪: 0-C:\XAMPP\htdocs\gas_php\checkbanned.php(7):包括() 1-{main}在C:\XAMPP\htdocs\gas

  • 问题内容: 在生产中,我有一个使用连接局部变量保存游戏状态的游戏。但是,我注意到,如果我在连接上闲置了一段时间,它将断开连接并重新连接,这将丢失当前状态。在本地主机上进行测试时,我从未注意到此行为。这是套接字连接的规范行为,还是导致连接断开的其他原因。 如果是正常行为,通常如何处理?是否应该将连接值全局存储,以便用户断开/重新连接时可以恢复连接值? 问题答案: 您的问题与套接字超时有关。如果某个套

  • 问题内容: 我正在尝试连接到Java中的HTTPS端点。我尝试过的每种方法(下面有更多详细信息)最终都会生成此堆栈跟踪: 我努力了: 与javax SOAP库和新的URL(“ https:// …”)连接 使用新的URL(“ https:// …”).openConnection()连接 手动创建SSL连接: 更多细节: 我尝试过的每一种方法都可以与其他SSL服务器配合使用,这就是这种特殊的服务器

  • 问题内容: 我在尝试从套接字读取时遇到以下错误。我正在执行该操作,并且出现此错误。仔细阅读文档,这表明连接的客户端部分关闭了连接。在这种情况下,我是服务器。 我可以访问客户端日志文件,但它没有关闭连接,实际上它的日志文件表明我正在关闭连接。有人知道为什么会这样吗?还有什么要检查的?当有本地资源可能达到阈值时,会出现这种情况吗? 我确实注意到我有以下几行: 就在readInt()。这是有原因的(长话

  • 我喜欢Jsoup解析html,但他们的连接有问题,我需要向同一个网站发送请求,但不同的查询参数,比如“id=XXX”,请求如下: 我不想为每个id创建新连接,而是为所有id请求保留一个连接,以下是我的代码: 但它似乎只适用于第一次,然后每次代码运行时都重复相同的请求,在这种情况下,我只能查询第一个id,即使我在其他时间传递了不同的id。我该怎么解决这个问题?