【问题标题】:Spring tool suite- SunCertPathBuilderException: unable to find valid certification path to requested targetSpring 工具套件 - SunCertPathBuilderException:无法找到请求目标的有效认证路径
【发布时间】:2018-06-08 15:55:03
【问题描述】:

我正在研究 STS,在创建新的 spring-boot 项目时,它显示以下错误:

 SunCertPathBuilderException: unable to find valid certification path to requested target

因为它以服务 URL 的形式访问 https://start.spring.io。

我在公司网络中工作,他们有自己的证书和安全规则。我查看了网络,但找不到任何明确的 STS 解决方案。我应该如何在 STS 中为给定的 URL 添加认证路径。 任何帮助表示赞赏。

【问题讨论】:

标签: java spring spring-boot spring-tool-suite


【解决方案1】:

我遇到了同样的问题并尝试了这个:Window -> Preferences -> Network Connections Change mode to Manual

现在可以正常使用了。

【讨论】:

  • 这是一个通用的解决方案。这应该是一个公认的答案。
【解决方案2】:

现在似乎 http 被重定向到 https。因此将 https 更改为 http 可能不起作用。我对数字证书几乎不熟悉。然而,我只是简单地列出了我必须做的事情才能让它为我工作。这也许是@Strelok 所建议的。

我使用的是 Windows 10 和 JDK 1.8.0_144 64 位。我也支持公司代理。我做了以下事情来让它为我工作。如果您处于类似情况,它可能对您有用。

导出公司证书(可能还有其他更简单的方法)

  1. 在 Chrome 上,我去了https://start.spring.io
  2. 在地址栏上单击 https 旁边的“锁定”符号。
  3. 在随后的弹出窗口中选择了“证书(有效)”。
  4. 在出现的对话框中,单击“证书路径”选项卡,从证书路径树下选择根节点,然后单击“查看证书”
  5. 在出现的对话框中,单击“详细信息”选项卡,然后单击“复制到文件”
  6. 这会打开“导出向导”,点击“下一步”。
  7. 将证书格式保留为默认的“DER 编码..”,点击“下一步”。
  8. 为证书提供文件名(.cer 扩展名)。
  9. 点击完成。

上述步骤将证书导出到我导入到信任库 (cacerts) 的文件中。

导入

  • 以管理员身份打开“命令”提示符以导入证书
  • 进入 Java 安装的 bin 目录(如果 jre/bin 在您的路径中,则不需要此步骤)
  • 运行以下:

    C:\Program Files\Java\jre1.8.0_144\bin>keytool -importcert -alias your-alias -keystore "C:\Program Files\Java\jre1.8.0_144\lib\security\cacerts" -storepass changeit -file C:\certificate-file-location\saved-certificate-file.cer

(根据需要替换您的 java 位置、证书文件位置和证书文件名。“storepass”应为“changeit”。)

重新启动 STS

【讨论】:

  • storepass是否表示keystore密码?
【解决方案3】:

最简单的解决方案是将您的公司证书安装到 JDK 的 cacerts 密钥库中。

<JAVA_HOME>/bin/keytool -import -alias CorpProxy -keystore <JAVA_HOME>/jre/lib/security/cacerts -file your_corp_cert.crt

系统将提示您输入密钥库密码,默认情况下为 changeit。

【讨论】:

  • 这应该是公认的答案,而不是上面的解决方法。此外,这将有助于解决其他问题,例如从市场安装插件。
  • 你拯救了我的一天!谢谢!
【解决方案4】:

在 URL 中尝试 http 而不是 https http://start.spring.io

以下错误将得到解决 "SunCertPathBuilderException: 无法找到到所请求目标的有效证书路径"

【讨论】:

  • 这在 Spring Tool Suite 3 版本中不起作用:3.9.9.RELEASE 在我添加 start.spring.io 的那一刻,它会自动更改为 start.spring.io。
  • 似乎 http 被重定向到 https,所以这可能不起作用。我添加了一个答案来列出我为使其正常工作所做的工作。
  • 在 STS 版本 4 中,如果我将 https 更改为 http,它会自动重定向到 https,请任何人帮我解决这个问题
  • @SrikanthJanapati 您找到解决方案了吗?我面临与 STS 4 相同的问题
【解决方案5】:

如果以上都不起作用,请尝试以下步骤。它对我来说很好,因为我也在公司网络下工作,有同样的问题。

  1. 如果打开,请关闭 STS 工具。
  2. 找到 STS.ini 文件(主要是安装 STS 工具和 STS.exe 的位置)
  3. 编辑 STS.ini。在底部添加以下两行(使用您的 JDK 位置,以下只是示例)

    -Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.8.0_20\jre\lib\security\cacerts

    -Djava.net.ssl.trustStorePassword=changeit

  4. 保存 STS.ini 并重新启动 STS.exe。

它适用于我的情况。谢谢你。

【讨论】:

  • 对我不起作用。
  • 成功了!!!,非常感谢
  • .ini 文件将与.exe 文件具有相同的文件名。在我的情况下是SpringToolSuite4.ini
【解决方案6】:

在这种情况下最好的办法是在浏览器中打开https://start.spring.io/,然后

并在 Artifact 字段中填写您的项目名称,在 Group 字段中填写您的项目基础包 点击

生成项目按钮

这会将 your-project-name.zip 文件下载到您的下载文件夹中。现在将此文件解压缩到您的 sts 工作区或您喜欢的任何地方。

现在将 STS 中的项目作为 Existing maven 项目导入

你已经完成了

【讨论】:

    【解决方案7】:

    在 eclipse.ini 中添加以下内容

    -Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.8.0_20\jre\lib\security\cacerts
    -Djava.net.ssl.trustStorePassword=changeit
    

    为我工作。

    【讨论】:

      【解决方案8】:

      我能够通过两个步骤解决问题。

      1. 首先我将 https://start.spring.io 上的证书导入 jdk cacerts。
      2. 最后我在SpringToolSuite4.ini文件中添加了TrustStore的路径和trustStore密码。

        -Djavax.net.ssl.trustStore=C:\Program Files\Java\jdk1.8.0_201\jre\lib\security\cacerts

        -Djava.net.ssl.trustStorePassword=changeit

      【讨论】:

        【解决方案9】:

        这个问题发生在我的一位同事身上,他无法在浏览器上打开https://start.spring.io,也无法在 STS 上创建新项目。我们尝试使用上述所有解决方案,但都没有奏效。

        我们尝试的最后手段是通过以下方式清除您日常使用浏览器的浏览器设置:

        1. Ctrl + Shift + Del
        2. 清除/删除所有设置,主要是 Cookie 和其他站点数据以及缓存的图像和文件 (浏览历史和密码可以免除)
        3. 重新打开浏览器。 [关闭再打开浏览器]
        4. 转到https://start.spring.io,您将能够打开 Spring Initializer 站点以及从 STS 创建一个新的 Spring Starter 项目。 (不知道 IntelliJ 是否会出现问题,但您可以按照所有步骤尝试一下)。

        【讨论】:

          【解决方案10】:

          我通过将 SSL 证书导入 CACERTS 文件解决了这个问题。

          但是应该注意的是,Eclipse/STS 默认使用自己的 JRE(在其插件文件夹中),例如 ::

          (STS--RELEASE)\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_16.0.2.v20210721-1149\jre\lib\security\cacerts

          【讨论】:

            【解决方案11】:

            在企业网络中,您可能没有管理员权限来导入cacerts 文件。以下步骤有助于在没有管理员权限的情况下在企业网络中使用 STS

            1. 了解您的 %userprofile% 目录

              • 开始 -> 运行
              • 输入%userprofile%并回车
              • 这将打开一个您可能具有写入权限的文件夹。注意路径
            2. 导出企业代理证书

              • 在 Chrome 上,转到 https://start.spring.io
              • 在地址栏上单击 https 旁边的“锁定”符号。
              • 在随后的弹出窗口中选择“证书(有效)”。
              • 在出现的对话框中,单击“证书路径”选项卡,从证书路径树下选择根节点,然后单击“查看证书”
              • 在出现的对话框中,单击“详细信息”选项卡,然后单击“复制到文件”
              • 这将打开“导出向导”,点击“下一步”。
              • 将证书格式保留为默认的“DER 编码..”,点击“下一步”。
              • 提供CorpRootCA.cer作为证书的文件名并保存在%userprofile%/cacerts文件夹中。您可能需要在 %userprofile% 中创建 cacerts 文件夹
              • 点击完成
            3. 识别 STS 使用的 JRE 路径

              • 打开 STS
              • 单击窗口 -> 首选项
              • 点击Java -> 已安装JRE
              • 复制 STS 使用的位置
            4. 复制 cacerts 文件

              • 从资源管理器中安装的 JRE 转到 jre 位置
              • 转到lib/security 并复制cacerts 文件
              • 转到%userprofile%/cacerts并将其粘贴到director中
            5. 使用 keytool 添加企业代理证书

              • 从资源管理器中安装的 JRE 转到 jre 位置
              • 在网址栏中输入cmd,在该位置打开命令提示符
              • ./bin/keytool -import -alias CorpProxy -keystore %userprofile%/cacerts/cacerts -file %userprofile%/cacerts/CorpRootCA.cer -storepass changeit

              “storepass”应该是“changeit”,这是默认密码。如果更改,请使用正确的 storepass

            6. 使 STS 指向新的 certstore

              • 打开包含 SpringToolSuite 可执行文件的文件夹
              • 会有一个与可执行文件具有相同文件的配置文件。就我而言,它是SpringToolSuite4.ini。打开文件
              • 在更改%userprofile 后添加以下行以匹配用户的目录。根据需要更新trustStorePassword。 changeit 是默认值
            -Djavax.net.ssl.trustStore=%userprofile%\cacerts\cacerts
            -Djava.net.ssl.trustStorePassword=changeit
            
            1. 重新启动 STS,它应该不再抛出

            SunCertPathBuilderException:无法找到请求目标的有效证书路径

            【讨论】:

              猜你喜欢
              • 2017-12-27
              • 2019-04-14
              • 2015-04-04
              • 1970-01-01
              • 1970-01-01
              • 2020-03-25
              • 2020-11-25
              • 2020-11-24
              • 2021-12-04
              相关资源
              最近更新 更多