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

问题描述

我已经使用自制软件安装了 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(通过想法或从控制台)时,我得到了这些错误:

:::: 错误服务器访问错误: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://stackoverflow.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 但这也无济于事

标签: javascalasslsbtssl-certificate

解决方案


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

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

https://github.com/MichalHecko/SSLPoke

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

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


推荐阅读