Thi*_*yão 8 java ssl scala sbt
当我尝试使用SBT时,无法下载某些文件,并出现以下错误:
服务器访问错误:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径url = https://repo1.maven.org/maven2/组织/阶-SBT/SBT/1.0.0-M4/SBT-1.0.0-M4.jar
我已经遵循了stackoverflow的一些建议,并使用java keytool导入了公司代理SSL证书,如下所述: Web服务代理中的SSL证书问题
它似乎不会影响SBT工具.它是否在不同的密钥库中查找?有任何想法吗?
如果我将URL粘贴到浏览器上,则会下载该文件.
我只是运行我安装的SBT工具时出现此错误.当我尝试在IntelliJ Idea上创建一个SBT项目并更新它时,它会给我带来不同URL的相同错误.尝试使用lightbend激活器时也是如此.
谢谢.
因此,当您在代理后面并且我们需要将代理服务器证书添加到java信任库时,会发生这种情况
cp $JAVA_HOME/jre/lib/security/cacerts <some accessible dir>/
# Get the certificate of the proxy server and store it in a file-proxy.pem
keytool -keystore caerts -import -file proxy.pem -alias my_proxy
# Now we can invoke sbt with following config
sbt  "-Djavax.net.ssl.trustStore=/path/to/included/proxycert/cacerts" compile
如果我没记错的话,SBT 间接使用旧版本的 apache commons httpclient (3.1),它不尊重默认情况下指定信任库的 java 系统属性。
我可以想到三种可能的解决方案:
使用像artifactory这样的代理存储库,这样SBT只需连接到代理,代理就可以通过公司代理向外处理https。
将公司颁发的证书安装到 JVM 的默认信任库中(通常%JDK_HOME%/jre/lib/security/cacerts)。每次运行新的 JRE 时都必须执行此操作。
尝试使用快递。它是 SBT 的一个插件,提供了一种不通过 apache httpclient 获取依赖项的不同方式。它使用一个 http 库,我认为该库应该尊重信任库的 java 系统属性。它也快得多。
| 归档时间: | 
 | 
| 查看次数: | 11033 次 | 
| 最近记录: |