Smack 4在连接上抛出"SSLHandshakeException:ValidatorException:SunCertPathBuilderException"

Jan*_*ski 3 java ssl xmpp smack

对于我的xmpp堆栈的集成测试,我在localhost上设置了一个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
Run Code Online (Sandbox Code Playgroud)

由于smack 4 api已经发生了很大的变化,到目前为止发现的例子已经不能再使用了.以前有人试过吗?

Flo*_*low 7

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

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

  • 为了创建一个接受当前服务器证书的SSLContext,可能需要链接[Java-pinning](https://github.com/Flowdalic/java-pinning)来简化任务.显然,只有在控制TLS连接的两端时才能使用此解决方案(请参阅Java-pinning自述文件). (2认同)