Java 错误 SunCertPathBuilderException: Unable to Find Valid Certification Path to Requested Target
本篇文章将讨论 unable to find valid certification path to requested target 潜在原因及其在 Java 中的解决方案。
但是,在我们继续之前,您必须清楚地了解 SSL 加密和证书,因为需要清楚地了解 SSL 证书。
SSL 加密和证书:如果没有 SSL 证书,HTTPS 连接就无法正常运行。 通过使用一组公钥和私钥,它可以证实所声称的服务或网站的身份。
私钥对域传递的所有内容进行加密或签名,客户端应用程序使用公钥来验证身份。
Java中的sun.security.provider.certpath.SunCertPathBuilderException是什么
sun.security.provider.certpath.SunCertPathBuilderException
是一个用于处理 Java 中异常的类,用于检查 Java 程序尝试连接的服务器的 SSL 证书。 此类以创建证书的提供者命名。
以下是开发人员遇到此问题时显示的错误消息。
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
在任何涉及使用 SSL 访问加密服务的操作期间都可能抛出该错误。
受 SSL 保护的 API 和网站在访问之前会由 Java 框架检查其可信度。 这是通过检查其内部受信任列表以查看签名的根证书颁发机构是否在其中来完成的。
如果 Java 无法发现对该服务的任何引用,则会抛出此错误。 使用自签名证书访问由他人数字签名签名的服务总是会失败。
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 的原因
Java 能够通过 SSL 连接到另一个程序的唯一方法是它可以信任 HTTPS 等。在 Java 世界中,通常有一个信任库 $JAVA HOME/lib/security/cacerts
,您可以在其中存储信任证书。
此异常是由 Java 信任存储中不存在的自签名证书或证书链触发的。 Java 拒绝连接到应用程序,因为它不信任该证书。
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 的解决方案
-
首先,确定问题是否源于证书或网络。 要验证这一点,请在 Google Chrome 或您首选的浏览器中打开该 URL,看看它是否有效。
在这种情况下,应用程序客户端上的无效证书设置必定是异常的根源。 如果浏览器无法访问,可能是防火墙或网络设置问题。
-
确定证书设置是否存在问题后,获取服务器的 SSL 证书。 在最简单的情况下,这可能是根证书,但在大多数情况下,需要证书链和中间证书颁发机构。
您可以按照以下步骤检查 SSL 证书的有效性。
-
打开浏览器并单击左上角的锁。
-
然后单击“连接是安全的”。
-
最后,您将获得该网站的状态(如果它有效)。
-
打开浏览器并单击左上角的锁。
-
如果您想导出证书详细信息,请按照以下步骤操作。
-
选择 URL 栏旁边的锁符号,然后单击连接安全 > 证书有效。
-
单击“详细信息”部分,然后单击“复制到文件”按钮导出证书。
-
导出 DER 编码的二进制文件。
-
选择要保存的目录并命名文件。
-
单击“完成”后,您将看到一条消息“导出成功”。
-
选择 URL 栏旁边的锁符号,然后单击连接安全 > 证书有效。
-
使用新证书启动信任存储条目。 可以使用关键工具实用程序来执行此操作。
执行以下命令创建新的信任存储。
keytool -import -file C:\cascerts\firstCA.cert -alias firstCA -Keystore myTrustStore
- 重新启动您的程序以完成该过程。
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,