获取 sbt 插件时“PKIX 路径构建失败”和“无法找到请求目标的有效认证路径”

Posted

技术标签:

【中文标题】获取 sbt 插件时“PKIX 路径构建失败”和“无法找到请求目标的有效认证路径”【英文标题】:“PKIX path building failed” and “unable to find valid certification path to requested target” when fetching sbt plugins 【发布时间】:2020-03-29 02:22:24 【问题描述】:

我已经使用自制软件安装了 java (11 - openjdk 11.0.2)、scala (2.13.1) 和 sbt (1.3.4)。 然后我尝试将证书添加到 java 的密钥库:

keytool -import -alias "my-cert" -keystore "$JAVA_HOME/lib/security/cacerts" -file ~/my-cert.cert

但是当我尝试使用 sbt(通过想法或从控制台)时,我得到了这些错误:

:::: ERRORS 服务器访问错误:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径 url=https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-scalajson_2.12/0.8.2/sjson-new-scalajson_2.12-0.8.2.pom

服务器访问错误:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径 url=https://repo1.maven.org/maven2/com/eed3si9n/sjson-new-scalajson_2.12/0.8.2/sjson-new-scalajson_2.12-0.8.2.jar

服务器访问错误:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径 url=https://repo.scala-sbt.org/scalasbt/maven-snapshots/com/eed3si9n/sjson-new-scalajson_2.12/0.8.2/sjson-new-scalajson_2.12-0.8.2.pom

服务器访问错误:PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径 url=https://repo.scala-sbt.org/scalasbt/maven-snapshots/com/eed3si9n/sjson-new-scalajson_2.12/0.8.2/sjson-new-scalajson_2.12-0.8.2.jar

我还尝试为 repo.scala-sbt (https://***.com/a/54746436) 添加证书:

keytool -import -alias "scala-sbt" -keystore "$JAVA_HOME/lib/security/cacerts" -file ~/scala-sbt.cert

但这也无济于事。 我该如何解决这个问题?


试过这个:

   keytool -importcert -trustcacerts -alias "my-cert" -keystore "$JAVA_HOME/lib/security/cacerts" -file ~/my-cert.cert

这并没有帮助


要连接到互联网,我使用 cisco anyconnect。 所有证书文件格式都按照建议更改为 *.pem,但这也无济于事

【问题讨论】:

你的电脑和repo1.maven.org之间是否有防火墙可以解码TLS消息? @savas 我不确定,但很可能是的 那么你可能需要将根证书添加到密钥库并将密钥库传递给 sbt,如 sbt "-Djavax.net.ssl.trustStore=cacerts" 编译。 仍然无法正常工作 :( 可能是我错过了什么 【参考方案1】:

我建议将问题分为两部分:

1) 将所需的中间证书和根证书添加到密钥库。然后你可以用一个简单的 java 应用程序(比如 SSLPoke)而不是 sbt 来测试这一步。

https://github.com/MichalHecko/SSLPoke.

2) 确保 sbt 使用正确的 keyotre。您可以使用 jvm 参数“-Djavax.net.ssl.trustStore”将密钥库传递给应用程序

如果您的公司位于卸载 ssl 流量的防火墙后面,您可以使用本地人工服务器来缓解此问题。

【讨论】:

以上是关于获取 sbt 插件时“PKIX 路径构建失败”和“无法找到请求目标的有效认证路径”的主要内容,如果未能解决你的问题,请参考以下文章

获取 PKIX 路径构建失败:jdk 更新后 sun.security.provider.certpath.SunCertPathBuilderException

PKIX 路径构建失败:wso2 oauth

建立 SSL 连接时,PKIX 路径构建失败

Eclipse 中的 PKIX 路径构建失败

Centos 7 中的 PKIX 路径构建失败

PKIX 路径构建失败: