我们的新防火墙提供了透明的代理,该代理发布了安全(HTTPS)连接的自签名SSL证书。
Android Studio要求我接受两个证书,我确认了。
现有项目构建正常。仅当我在build.gradle文件中更改或添加依赖项时,出现此错误消息:
Gradle 'MyApp' project refresh failed
Error:Cause: unable to find valid certification path to requested target
有没有办法告诉Gradle插件来信任防火墙生成的SSL证书?
应始终避免降级安全性;)
根据喷气脑发布的解决方案:
eh,这是一个喷气脑/想法问题。尽管能够选择Gradle包装纸的Java安装,但IDE当前正在使用的JRE仍在完成包装纸的抓取……防止包装器甚至启动。它应该提示像IDE中的其他任何地方一样信任证书,但事实并非如此。在此期间,我发布了说明,以解决需要它的人。(此问题在2017.2.1持续存在)
根据对那篇文章的评论,我写了此bash脚本:
#!/bin/bash
set -eu
CA_PEM_FILE="${1?Missing path to certificate file}"
ANDROID_STUDIO_PATH="${2:-/opt/android-studio/jre/jre/lib/security}"
if [ -f "${CA_PEM_FILE}" ]
then
printf "n>>> ADDING A CERTIFICATE TO ANDROID STUDIO <<<n"
# https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000094584-IDEA-Ultimate-2016-3-4-throwing-unable-to-find-valid-certification-path-to-requested-target-when-trying-to-refresh-gradle
cd "${ANDROID_STUDIO_PATH}" &&
printf "changeitnyesn" | keytool -keystore cacerts -importcert -alias ProxyCertificate -file "${CA_PEM_FILE}" &&
printf "n >>> CERTICATE ADDED SUCCESEFULY<<<n"
else
printf "n >>> FATAL ERROR: Certificate not found in path ${CA_PEM_FILE} <<<n"
fi
调用:
sudo ./add-certificate-to-android-studio.sh /etc/ssl/certs/ProxyCA.pem
如果您已将Android Studio安装在不同于/opt/android-studio
的位置,则必须像以下位置调用:
sudo ./add-certificate-to-android-studio.sh /etc/ssl/certs/ProxyCA.pem /android/path
我在此答案中找到了一个有效的解决方案/解决方案:
强制使用http而不是https
我用maven {url" http://jcenter.bintray.com"替换了jcenter()。
此解决方法要求Jcenter可以通过HTTP访问,而HTTP将来可能会出于安全原因而被禁用。