今天在MAC机器上,使用Gradle编译项目是遇到错误如下:
根据错误提示:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
根据错误提示,失败的主要原因是由于不能相信https://services.gradle.org/distributions/gradle-7.4-bin.zip的证书导致的。不过,当通过浏览器直接访问时,也没有显示证书是不可信任的,也可以下载。
经过调查得知,MAC机器上安装了Zscalar的VPN软件,公司的IT已经将Zscalar的根证书做到系统里了,所以,通过浏览器是可以访问,没有问题的。但是,gradle是通过java的jvm来执行的,Java也会有一系列的信任证书,而Zscalar的证书可能没有被翻到java的信任证书列表中。
知道问题了,就可以很好解决了。 解决方案就是把Zscalar的证书,添加到Java的可信任证书列表中。
这里以MAC机器为例讲解如何处理:
1) 打开 Keychain Access
2) 查找 Zscaler
3) 选择根证书,右键,导出证书。
4) 执行命令将根证书导入:
sudo keytool -import -alias zScaler -keystore $JAVA_HOME/lib/security/cacerts -file /Users/code/Zscaler_Root_CA.cer
5) 需要注意的是:每次升级都可能要执行此命令,所以,需要保留这条命令和导出的证书。
导入成功之后,再执行gradle编译命令:
执行成功。