Android Studio - 无法找到请求目标的有效认证路径

Posted

技术标签:

【中文标题】Android Studio - 无法找到请求目标的有效认证路径【英文标题】:Android Studio - Unable to find valid certification path to requested target 【发布时间】: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" 重启一次 【参考方案1】:

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

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

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

    关闭 Charles Proxy; 重启 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,因为这是有风险的。相反,导入丢失的证书,请参阅下面的评论:***.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,这是有充分理由的。按照***.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 连接。这正是问题所在。如果您处于相同的情况,此解决方案可能会有所帮助:

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

步骤:

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

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

systemProp.http.proxyHostsystemProp.http.proxyPort

也设置

systemProp.https.proxyHostsystemProp.https.proxyPort

现在应该没问题了。

【讨论】:

除了 bintray 证书,我还必须为公司网络内部的 CA 证书执行此操作。 你能告诉过程你是如何导出bintray证书的吗? @SantanuSur:见下文答案:***.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 浏览器中打开它们,然后尝试干净构建它对我有用。

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

【讨论】:

正确。我的问题是我已连接到工作场所 ***,它正在尝试构建项目并为此尝试自动下载证书但无法连接。一旦我从 *** 断开连接,它就可以正常工作了。【参考方案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 ***,导致出现此错误。

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

【讨论】:

需要***,所以这没有多大帮助【参考方案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

然后一切顺利。

【讨论】:

以上是关于Android Studio - 无法找到请求目标的有效认证路径的主要内容,如果未能解决你的问题,请参考以下文章

React-Native Android 构建失败 - 无法找到请求目标的有效认证路径

未找到Android Studio NDK iostream文件,无法在CMakeList中启用neon

Visual Studio 核心错误无法在 macOS 中找到 Android Studio 可执行文件

Android Studio 错误:无法找到 adb 位置

颤振医生 --android-licenses 错误:无法找到或加载主类 Studio

使用Android Studio“无法找到adb”[重复]