java - HTTPS 客户端无法连接 - PKIX 路径构建失败但根证书存在

标签 java ssl-certificate

我有一个 Java 中的 HTTP 客户端,我收到一个 SSLHandshakeException 消息“PKIX 路径构建失败 [classname] 无法找到请求目标的有效证书路径”

我进行了搜索,但所有的建议似乎都是根 CA 不在信任库中。除了......我试图将根证书添加到信任库和 keytool 说

“证书已存在于别名下的系统范围的 CA keystore 中”,带有别名。

我通过访问我试图在浏览器中访问的站点(Chrome - 但没有浏览器提示任何问题)获得了证书来尝试此操作,并且我在链中导出了根证书。然后我尝试导入上面的结果(我当时中止了导入)。

我现在不确定如何解决这个问题。

我注意到证书链中的浏览器显示了 CA 的第二个证书(因此 CA 证书 1 -> CA 证书 2 -> 目标证书),我想我可以尝试导入那个证书,但我觉得我正在拍摄在黑暗中。

还有什么我想念的吗?

最佳答案

为了使证书有效,您必须拥有从它到受信任的根证书的完整路径

通常这是由服务器向客户端提供所有必要的证书来完成的。然而,一些网络服务器不这样做,而是只提供自己的证书。

您似乎遇到过这样配置错误的服务器。尝试将中间证书导入本地信任库,以便客户端能够构建从服务器证书到受信任根的完整链。还要记住 -trustcacerts 选项。

关于java - HTTPS 客户端无法连接 - PKIX 路径构建失败但根证书存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9235983/

相关文章:

java - ArrayList 排序元素的初始索引

java - 在 Spring 表达式语言中访问属性文件

ssl-certificate - 如何检查SSL证书是否损坏?

azure - azure 网站中的空 ssl 证书列表

python - 如何使用python下载x509证书

java - Spring 集成: Dispatcher has no subscribers for channel

java - 为什么java并发测试失败?

java - Java 网络应用程序的静态 Assets 管理器

javascript - 为什么Apache服务器每天都会自动启动并且它会停止nodeJs?

ssl - 由于证书中缺少别名,总是在 JMeter 中收到错误代码