【问题标题】:Android Studio - Unable to find valid certification path to requested targetAndroid Studio - 无法找到请求目标的有效认证路径
【发布时间】:2014-12-29 02:21:50
【问题描述】:

我收到了这个错误

Gradle 'project_name' project refresh failed: Unable to find valid certification path to requested target

当我在 Android Studio 0.8.14 Mac OSX 上创建新项目时

Build.gradle 文件好像变空了

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.13.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    } }

allprojects {
    repositories {
        jcenter()
    } }

而且我不能运行项目,看来我必须手动配置所有内容。

这里是idea.log http://pastebin.com/kyhfrBp9

【问题讨论】:

  • 我会说你的 build.gradle 文件不是那么空。这是父 build.gradle,它没有定义任何公共属性。您的模块文件 (build.gradle) 将包含项目中编译单元的各个条目。你能告诉我build.gradle的内容吗(模块:...)
  • 什么时候出现这个错误?建造 ?打开一个项目? .它阻止你继续吗?你能发送那个项目文件吗
  • 您好,我已经解决了这个问题,确保应用程序级别构建 gradle 依赖项示例 classpath 'com.android.tools.build:gradle:2.3.3' 应该与 CordovaLib Dir 构建 gradle 依赖项 classpath 'com.android.tools.build:gradle:2.3.3' 匹配另外,检查 repositories { jcenter() } 收件人 repositories { maven { url "http://jcenter.bintray.com"} }
  • 重启一次

标签: android gradle android-studio certificate


【解决方案1】:

这件事发生在我身上,原来是因为 Charles Proxy

Charles Proxy是一个HTTP调试代理服务器应用程序

解决方案(仅当您安装了 Charles Proxy 时):

  1. 关闭 Charles Proxy;
  2. 重启 Android Studio。

【讨论】:

  • 哇。谢谢。我不会猜到的。
  • 我们如何关闭 CharlesProxy?
  • @AndroGeek 这是一个普通的代理应用程序,只需关闭它就可以了。如果您不知道,那可能不是您的问题的原因。或者您可以检查您是否使用了任何其他可能会干扰您的 IDE 网络活动的代理。
  • 如果能详细了解 Charles Proxy 是什么以及它会造成什么麻烦,那就太好了。似乎它以某种方式阻止了 SSL 通信......
  • 这就像我第 107 次通过关闭 Charles 来解决一些奇怪的问题,谢谢
【解决方案2】:

“无法找到到所请求目标的有效认证路径”

如果您收到此消息,您可能在您公司的代理后面,该代理可能正在使用您公司的根 CA 证书签署所有请求证书,此证书仅在您的公司内部受信任,因此 Android Studio 无法验证任何证书使用您的公司证书签名为有效,因此,您需要告诉 Android Studio 信任您的公司证书,您可以通过将公司证书添加到 Android Studio 信任库来做到这一点。

(我在 macOS 上这样做,但在 Linux 或 Windows 上应该类似)

  • 首先,您需要将您的公司根 CA 证书保存为文件:您可以向您的 IT 部门索取此证书,或自行下载,方法如下。打开浏览器并打开此网址,例如https://jcenter.bintray.com/https://search.maven.org/,单击锁定 图标,然后单击显示证书

在弹出窗口中,要将根证书保存为文件,请确保选择证书链的顶层(根证书)并将证书图像拖到磁盘驱动器上的文件夹/目录中。它应保存为文件,例如:my-root-ca-cert.cer,或 my-root-ca-cert.pem

  • 其次,让我们将此证书添加到 Android Studio 接受的服务器证书中:

在 Android Studio 上打开Preferences -> Tools -> Server Certificates, 在Accepted certificates框上单击加号图标(+),搜索您之前保存的证书并单击ApplyOK

  • 第三,需要将证书添加到 Android Studio JDK 信任库(Gradle 使用这个 JDK 构建项目,所以很重要):

在 Android Studio 中打开File -> Project Structure -> SDK Location -> JDK Location

复制JDK Location的路径,打开终端,把你的目录改成那个路径,例如,执行:

cd /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/

(别忘了把空格换成“\”)

现在,要将证书导入到信任库,请执行:

./bin/keytool -importcert -file /path/to/your/certificate/my-root-ca-cert.cer -keystore ./jre/lib/security/cacerts -storepass changeit -noprompt
  • 最后重启Android Studio,还是点击File -> Invalidate Caches / Restart

完成,您现在应该可以构建您的项目了。

【讨论】:

  • 你拯救了我的一天!我只在我的 JDK HOME 上导入了证书,而不是在 Android Studio JRE 中
  • 谢谢。这是添加证书的一组非常简洁的步骤。鉴于 Android Studio 具有诱人的“自动接受不受信任的证书”复选框,确实不需要它,但您仍然必须执行这些步骤。
  • 这应该是一个答案。谢谢卡洛斯!
  • @Keab42 第 3 步是必要的。第 2 步(或仅选中您提到的复选框)适用于 Android Studio,但不适用于 Gradle。第 3 步解决 Gradle 问题。
  • 今天,使用 Android Studio Artic Fox | 2020.3.1 新安装的补丁 2,在我的情况下 /jre 文件夹不存在 ;) 将证书导入到信任库:./bin/keytool -importcert -file /path/to/your/certificate/my-root-ca -cert.cer -keystore lib/security/cacerts -storepass changeit -noprompt
【解决方案3】:

对我来说,问题是 android studio 无法与 'https://jcenter.bintray.com/'

将其更改为“http”为我解决了这个问题(虽然不建议这样做)。

在你的 build.gradle 文件中,更改

repositories {
   jcenter()
}

repositories {
   maven { url "http://jcenter.bintray.com"}
}

【讨论】:

  • 这解决了我的问题。但现在我正在使用像 artifactory 这样的东西来管理我的 repos
  • 请不要开启 SSL,因为这是有风险的。相反,导入丢失的证书,请参阅下面的评论:stackoverflow.com/a/44147334/1532478
  • 使用 gradle v2.2.2 和 android Studio 3.5.3,上述解决方案对我不起作用。
  • jcenter 不再通过 http 可用。只有https
【解决方案4】:

如果您在受限的工作场所工作,您可能会遇到这个问题

一些对我有用的东西的组合 基本上把 https 改成 http

来自https:

repositories {
   jcenter()
}

收件人:

repositories {
        maven { url "http://jcenter.bintray.com" }
   }

gradle-wrapper.properties ..

发件人:

    distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

收件人:

   distributionUrl=http\://services.gradle.org/distributions/gradle-3.3-all.zip

然后

- (optional)  File -> Invalidate Caches / Restart`
- Give a clean build.

验证:检查您的 Gradle 控制台。它应该开始通过 HTTP 从 jcenter 下载库。

【讨论】:

  • 它为我工作 distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
  • 请不要开启 SSL/https,这是有充分理由的。按照stackoverflow.com/a/44147334/1532478中的说明安装 SSL 证书
  • @trapicki 我不确定 android studio 正在寻找哪个证书。我已经尝试了您提到的链接中的所有证书。仍然面临同样的问题。你能指出它正在寻找的一个证书吗?
  • 我几乎已经导入了所有的 Digi cert 证书但没有任何帮助
【解决方案5】:

好的,可能我迟到了,但是从 3.0 升级到 3.0.1 后我遇到了这个问题。 这个问题是因为我在受限网络中工作。

对我有用的解决方案如下:

解决方案

第 1 步:获取证书

jcenter() 等于 https://bintray.com/bintray/jcenter

您需要将 jcenter 的证书导入您的 java 密钥库。

使用浏览器访问 jcenter 并将证书导出为 .cer 文件。 (Firefox 地址栏或 Chrome 开发者工具安全选项卡左侧的锁定图标。不过,Internet Explorer 和 Edge 不支持保存网站证书。)

第 2 步:导入证书 在 Android Studio 中,转到File -> Settings -> Tools -> Server Certificates

接受证书下点击+。选择导出的证书。

第 3 步:刷新密钥库 在 Android Studio 中,转到 File -> Invalidate Caches/Restart...。从出现的消息框中选择Invalidate and Restart

【讨论】:

  • 如何下载证书?我访问了 bintray 网站,然后?
  • 使用浏览器访问 jcenter 并将证书导出为 .cer 文件。 (Firefox 地址栏左侧的锁定图标,或 Chrome 开发者工具安全选项卡)
  • 不,我可以下载它并将 .cer 添加到接受的证书中..但是 android studio 显示相同的错误.. !!
  • 请您的网络人保存您的 IP。允许访问所有 jcenter\Google Repositort URL。或者下载旧版本的 Android Studio,比如 3.0
  • 没用 :( 我什至检查了“自动接受不受信任的证书”
【解决方案6】:

我在具有代理/防火墙/病毒扫描器组合的企业环境中,将公司自己的 SSL 根证书(自签名)添加到每个 SSL 连接的信任路径中,以调查 SSL 连接。这正是问题所在。如果您处于相同的情况,此解决方案可能会有所帮助:

  1. 在浏览器中打开https://jcenter.bintray.com(我更喜欢火狐)
  2. 单击带有符号的挂锁以检查认证的信任路径。如果树中的顶级/根证书是您公司签署的证书,请将其导出到您的硬盘。
  3. 为了安全起见,还可以安全导出介于两者之间的每个证书
  4. 使用密钥库资源管理器工具Keystore Exlorer 使用密码“changeit”打开路径 JDKPATH/jre/lib/security/cacerts 中的 Android Studio 信任库
  5. 从您公司的根证书开始将导出的证书导入到 trusstore,然后执行第 6 步。在大多数情况下,这可以解决问题。如果没有,请逐步导入其他证书。
  6. 保存信任库
  7. 使用“File -> Invalidate Caches/Restart”退出 Android Studio

【讨论】:

  • 按照步骤操作,但仍然遇到相同的 SSL 错误。无法获取资源:'dl.google.com/dl/android/maven2/com/android/tools/build/gradle/…'。
  • 如果您在 Android Studio 之外遇到此错误(例如使用 React Native CLI),那么您需要强制重启主机上正在运行的 Java 进程(例如通过 Windows 上的任务管理器)以获取证书更新
  • 我还想提一下,在某些情况下,Gradle/React Native/Android Studio 可能全部使用单独的 JDK/JRE 密钥库 - 您需要更新 CA 证书缓存让每个人都能工作
  • 第一次对我不起作用。保存密钥库时遇到一些异常。**KSE Explorer** 以管理员身份打开,并成功保存到密钥库并且工作正常。
  • 第 4 步中的 JDKPATH 通常为 $JAVA_HOME。但除非另有设置,否则 Android Studio 使用来自“C:\Program Files\Android\Android Studio\jre”的嵌入式 JRE。我通过在文件 > 项目结构 > SDK 位置下将“JDK 位置”更改为 $JAVA_HOME 的值来解决此问题。
【解决方案7】:

虽然这个问题很老了,但很多人肯定都面临同样的问题,所以我想说明我是如何解决这个问题的。

问题是类路径'com.android.tools.build:gradle:0.13.2' 通过 build.gradle 中的上述行,您要求它查找特定版本的 gradle,但您的机器中不存在此版本。最好将上面的行更改为

classpath 'com.android.tools.build:gradle:+'

【讨论】:

  • 在查看了所有其他答案之后,这是最终奏效的答案!谢谢
【解决方案8】:

jcenter() 等于https://bintray.com/bintray/jcenter

您需要将 jcenter 的证书导入您的 java 密钥库。

步骤:

  1. 使用浏览器访问 jcenter 并将证书导出为 .crt 文件。 (Firefox 左侧的锁定图标 地址栏或 Chrome 开发者工具安全标签)
  2. 下载 this 工具并运行它。
  3. 选择“打开现有的 KeyStore”按钮 打开JDKPATH/jre/lib/security/cacerts,密码是“changeit”
  4. 使用“导入可信证书”按钮导入 .crt 文件,然后保存并存在

如果你在代理后面,在 gradle.properties 中,除了设置

systemProp.http.proxyHostsystemProp.http.proxyPort

也设置

systemProp.https.proxyHostsystemProp.https.proxyPort

现在应该没问题了。

【讨论】:

  • 除了 bintray 证书,我还必须为公司网络内部的 CA 证书执行此操作。
  • 你能告诉过程你是如何导出bintray证书的吗?
  • @SantanuSur:见下文答案:stackoverflow.com/a/50603870/3412545
  • 谢谢,这是正确的答案:使用自定义根证书更新密钥库以启用正确的 SSL 传输。
【解决方案9】:

对我来说,这是我的互联网,我在受限网络上工作

【讨论】:

  • 您找到解决方案了吗?
  • @阿里。如果我不能切换到打开怎么办。你有什么解决办法吗?
  • 这是我的情况。我切换到移动网络
【解决方案10】:

对我来说似乎是一个错误。 我遇到了同样的问题,并通过在我的项目目录中手动启动 gradlew.bat 来解决它。

【讨论】:

    【解决方案11】:

    我今天升级到 Android Studio 3.2 Beta 2 后遇到了这个问题。我已经为 OpenJDK 10.0.1 配置了我的 JDK,升级后它抛出了这个错误。我将JDK设置回使用嵌入式JDK,错误消失了。

    我不知道为什么在升级到 Beta 2 之前它运行良好,但现在一切都很好。老实说,我想 Android 上不需要 OpenJDK 10。

    【讨论】:

      【解决方案12】:

      尝试更新您的 Android Studio,现在是 1.0.2 版

      【讨论】:

        【解决方案13】:

        在 build.gradle 文件中正确添加最新的 gradle 版本,在 gradle-wrapper.properties 文件中添加最新的 distributionUrl。 【android studio 最新gradle版本请参考https://developer.android.com/studio/releases/gradle-plugin.html

        确保网络连接正确[网络连接不应阻止在 android studio 中升级 gradle]。 gradle upgrade android studio 后会提示接受/拒绝证书,我们应该接受证书。

        【讨论】:

          【解决方案14】:

          转到右下角的 Gradle 控制台并打开它。在这里您将看到一些 https/https 调用,单击链接并在 Web 浏览器中打开它们,然后尝试干净构建它对我有用。

          我认为这是因为工作室无法从点击中获得响应。

          【讨论】:

          • 正确。我的问题是我已连接到工作场所 VPN,它正在尝试构建项目并为此尝试自动下载证书但无法连接。一旦我从 VPN 断开连接,它就可以正常工作了。
          【解决方案15】:

          我得到它是因为我在代理后面。我在 gradle.properties 中设置了 http 但没有设置 https 代理。在这种情况下需要 Https:

          systemProp.http.proxyHost=<host>
          systemProp.http.proxyPort=<port>
          systemProp.https.proxyHost=<host>
          systemProp.https.proxyPort=<port>
          

          另外,请查看 Android Studio 日志以了解可能出现错误的位置。

          【讨论】:

            【解决方案16】:

            在使用gradle 4.4plugin 3.1.2 升级到Android Studio 3.1.2 后,我遇到了类似的错误,然后尝试了几乎所有上述解决方案,一次又一次地产生相同的错误。

            Invalidate Caches / Restart终于帮了我一个忙:File>Invalidate Caches / Restart...>Invalidate and Restart

            【讨论】:

              【解决方案17】:

              我的公司让我们使用 FortiClient VPN,导致出现此错误。

              如果适用,请尝试断开与您的 VPN 的连接,然后重试。

              【讨论】:

              • 需要VPN,所以这没有多大帮助
              【解决方案18】:

              如果仍有问题,请尝试删除“C:\Users\UserName\.AndroidStudio1.2”下名为“.AndroidStudio1.2”的目录

              当然名称会根据你的版本而有所不同

              这对我有用

              【讨论】:

                【解决方案19】:

                当您包含依赖项并且它没有像 mavenCentral() 或 jcenter() 等存储库引用来下载它时,通常会发生这种情况

                我通常会确定这种依赖关系是将 gradle 设置为离线工作,Android Studio 将自动显示本地不可用的依赖关系,然后在其提供者 github 页面中查找依赖关系详细信息,例如从哪个存储库中选择和更新您的存储库并将其下沉。希望它会工作

                【讨论】:

                  【解决方案20】:

                  我遇到了同样的问题,这是因为 Cyber​​oam 阻止了我的以下 URL

                  原因:org.gradle.api.resources.ResourceException:无法从https://maven.fabric.io/public/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据。

                  【讨论】:

                    【解决方案21】:

                    我更改(更新)了我的 gradle 版本并且它有效 表格

                    classpath 'com.android.tools.build:gradle:3.1.4'
                    

                    收件人

                    classpath 'com.android.tools.build:gradle:3.3.0'
                    

                    【讨论】:

                      【解决方案22】:

                      检查系统中的 fiddler 之类的代理应用程序,如果它正在运行,请关闭该应用程序并重新启动您的 android studio

                      【讨论】:

                        【解决方案23】:

                        由于这是由于您正在运行的网络配置错误造成的,因此只需将您的智能手机设置为使用 USB 网络共享共享其互联网连接并使用它来下载丢失的软件包。

                        【讨论】:

                          【解决方案24】:

                          这是我对消息关键短语的解决方案:“无法找到有效的证书路径”和“PKIX 路径构建失败”。

                          当找不到 SSL 认证文件时会显示这些短语。

                          在浏览器中打开https://jcenter.bintray.com/ 并以cer 格式导出证书。

                          将证书放入 Android Studio 的 cert 文件夹中

                          {your-home-directory}/.AndroidStudio3.0/system/tasks/cacerts
                          

                          然后一切顺利。

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 2021-12-04
                            • 1970-01-01
                            • 1970-01-01
                            • 2015-02-13
                            • 2019-10-15
                            • 2021-06-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多