java - Smack 4 在连接时抛出 "SSLHandshakeException: ValidatorException: SunCertPathBuilderException"

标签 java ssl xmpp smack

为了对我的 xmpp 堆栈进行集成测试,我在本地主机上设置了一个 vysper 服务器 (0.7)。 现在我想使用版本 4.0.2 中的 smack-core 和 smack-tcp 连接到服务器。

问题:

Caused by: 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

由于smack 4 api变化很大,目前找到的例子不能再用了。 以前有人试过这个吗?

最佳答案

SSLHandashskeException 告诉我们 SSL/TLS 握手失败,这是因为有一个 ValidatorException 告诉我们“PKIX 路径构建失败”,因为有一个 SunCertPathBuilderException 抛出,因为 Java API“无法找到请求目标的有效证书路径”。

Java API(即,这不是由 Smack 完成的)无法使用 Activity 的 SSLContext 构建到服务器 SSL/TLS 证书的有效证书链。这就是抛出此异常的原因。您需要提供一个有效的证书(但是它是由您当前使用的 SSLContext 定义的)或告诉 Smack 使用接受您当前服务器证书的 SSLContext (ConnectionConfiguration.setCustomSSLContext(SSLContext))

关于java - Smack 4 在连接时抛出 "SSLHandshakeException: ValidatorException: SunCertPathBuilderException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495368/

相关文章:

java - @PreAuthorize 无效。可能是什么问题?

java - 无法在另一个包中加载 FXML (JavaFX)

java - 尝试更新我的 Intellij 时出现 OutOfMemory 错误

java - 创建 Xmpp 连接并传递实例而无需重新创建的最佳方法

ios - XMPPFramework - 'didReceiveMessage' 在收到消息时调用两次

Java与mysql通信

SSLSocket 和 AES 加密

Python:urllib.error.HTTPError:HTTP 错误 525:Origin SSL 握手错误

c# - 在 Sql Server 连接字符串中使用 Encrypt=yes -> "provider: SSL Provider, error: 0 - The certificate' s CN 名称与传递的值不匹配。”

xml - 如何有效地为基于 XML 的文本协议(protocol)定义传输结束?