Android Studio:服务器证书不可信

Android Studio:服务器证书不可信

问题描述:

忽略此警告是否安全?它显示了,当我创建Android Studio中一个新项目:Android Studio:服务器证书不可信

Server's certificate is not trusted 

Certificate details 

Issued To 

CN (Common Name)  *.google.com 
O (Organization)  Google Inc 
L (Locality)   Mountain View 
C (Country)   US 
ST (State or Province) California 

Issued By 

CN (Common Name)  Google Internet Authority G2 
O (Organization)  Google Inc 
C (Country)   US 

Validity Period 

Valid from:   9/24/14 
Valid until:   12/23/14 

... 

日期看起来没事,我检查了我的计算机的日期设置,以确保万无一失。为什么会是“不可信”?

Android Studio中有服务器证书的配置(这适用于以及其他的IntelliJ平台,如PyCharm)

转到文件 - >设置。在IDE设置部分选择服务器证书

我自己,我只是选择了接受自动复选框,点击应用,从来没有来对付它。如果您担心安全问题,还可以选择一次添加1个。

在我的情况下,我这样做是因为我已经有一个* .google.com证书配置为接受,但我仍然弹出。我怀疑指纹是否改变,如果我删除了,然后接受,错误将会消失,但我决定通过选中复选框使其消失。

+3

在IntelliJ IDEA的15,该复选框是在这里:**文件>设置...>工具>服务器证书>自动接受非受信任的证书** – 2016-01-06 09:42:30

+2

你反对投票我的答案,因为我选择了吗?我从来没有说过你应该这样做。如果NSA想把新的SDK推到我的开发环境中,世界一定不会再那么可怕了。 – 2016-03-01 17:53:02

+0

是的。这比添加您需要的证书更不理想。鉴于有人来到网站并寻找快速解决方案,他们的第一个选择应该是添加证书而不是盲目信任所有未签名的 – chrisortman 2016-03-21 15:16:01

忽略该警告是不安全的。有人可能会尝试用假证书进行中间人攻击,以便通过更新过程在您的计算机上安装恶意软件。这可能没有发生,但在安全方面正确地做事总是更好。

您应该将您信任的根证书添加到Android Studio密钥库中。密钥库的位置和默认密码应列在该警告的底部。例如,我的地址是~/Library/Caches/AndroidStudio/tasks/cacerts。接下来,您需要在服务器呈现的链中找到根证书。不幸的是,这个警告并没有列出整个链条,因此需要一点努力才能找到它。 Google Internet Authority G2证书与用于签署Google网站证书的证书相同。您可以转到google.com,点击绿色锁,然后点击连接标签中的“证书信息”,查看Chrome中的链。此时,您可以验证警告中的哈希与真正的G2证书的哈希匹配。您还会看到根证书名为Equifax Secure Certificate Authority。你可以从https://www.geotrust.com/resources/root-certificates/下载它。接下来,您需要将其添加到密钥库:

keytool -import -alias equifaxca \ 
-file Equifax_Secure_Certificate_Authority.pem -keystore cacerts 

最后,重新启动Android Studio。 2018年8月22日之前,该警告不应该再次出现,除非有人真的出示假证书。

对于Mac操作系统,它位于菜单Android Studio-> Preferences-> Tools-> Server Certificates中。

在右侧窗口的顶部选择复选框自动接受不可信证书。点击应用并确定。

从AndroidStudio 1.5.1开始,您可以转到首选项 - >工具 - >服务器证书,然后单击+按钮手动添加应该信任的证书。

缺少专用于Java的系统证书。如果您使用的是Ubuntu和Oracle JRE/JDK,请安装ca-certificates-java软件包。

我添加了一个由非标准证书颁发机构(CA)签名的带有SSL证书的maven仓库后,遇到了这个问题。

从我的命令行为我的项目运行Gradle构建时,一切正常(我已将自定义CA添加到我的计算机Java安装cacerts)。我有问题,但是从运行的Android工作室的建立,并得到象这样的错误:

> Could not resolve joda-time:joda-time:2.9.9. 
    > Could not get resource 'https://custom-maven-repo.com/repository/releases/joda-time/joda-time/2.9.9/joda-time-2.9.9.pom'. 
    > Could not GET 'https://custom-maven-repo.com/repository/releases/joda-time/joda-time/2.9.9/joda-time-2.9.9.pom''. 
     > sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
     > PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
      > unable to find valid certification path to requested target 

我下载了pem文件自定义CA,叫my-ca.pem。我试着在将这个到Android工作室 - >工具 - >服务器证书,但是这并没有解决它。

我注意到,Android Studio中使用嵌入式JDK(文件 - >项目结构 - >SDK位置 - >JDK位置)在/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home。为了得到认可证书,我跑(在Mac OS X)这些命令来添加证书,然后杀了Android Studio的java程序:

/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -import -alias my-ca -keystore /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -file path/to/my-ca.pem -noprompt 
kill -9 $(ps -A | grep java | grep "Android Studio" | grep -v grep | awk '{print $1}') 

从Android Studio中运行gradle这个构建然后工作了。

另一种解决方案是设置了Android Studio中使用你的机器,安装了CA证书,使用菜单中文件上使用自定义JDK - >项目结构 - >SDK位置 - >JDK位置