Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 掴掴掴掴掴掴掴;SSLHandshakeException:ValidatorException:SunCertPathBuilderException";连接_Java_Ssl_Xmpp_Smack - Fatal编程技术网

Java 掴掴掴掴掴掴掴;SSLHandshakeException:ValidatorException:SunCertPathBuilderException";连接

Java 掴掴掴掴掴掴掴;SSLHandshakeException:ValidatorException:SunCertPathBuilderException";连接,java,ssl,xmpp,smack,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.SunCer

为了集成测试我的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已经发生了很大的变化,所以到目前为止发现的示例不能再使用了。
以前有人尝试过这个吗?

sslhandashskeeexception告诉我们SSL/TLS握手失败,这是因为有一个
验证器异常
告诉我们“PKIX路径构建失败”,因为有一个
SunCertPathBuilderException
抛出,因为Java API失败了“找不到请求目标的有效证书路径”


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

请注意,Smack 4.0.3是当前最新版本。但这与异常无关。感谢您的提示…但4.0.3似乎在central上不可用:感谢您指出这一点,4.0.3已发布到central,不久将可用。好的。我将尝试一下(但我不确定我什么都拿到了:-)。对于我的localhost i-test场景,是否有一种方法可以绕过所有证书和上下文?是的,但只有当您意识到安全问题时才可以这样做。如果要绕过所有检查,您最有可能希望简单地禁用安全性。因为结果是相同的。我找不到如何禁用vysper的安全性…是否可能根本不可能?为什么不在Smack中禁用安全性?为了创建一个接受当前服务器证书的SSLContext,可能需要链接以简化任务。显然,只有在控制TLS连接的两端时才应该使用此解决方案(请参阅Java pinning自述)。