错误:原因:无法找到所请求目标的有效证书路径

Ren*_*nan 51 android gradle android-studio

我在同步gradle时在android Studio 2.2.3中出现以下错误.

错误:原因:无法找到所请求目标的有效证书路径

我该如何解决这个问题

我也在添加我的Gradle文件

apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
    applicationId "com.sample.myapplication"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
} } dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:palette-v7:23.4.0'
testCompile 'junit:junit:4.12'
// FireBase
compile 'com.google.firebase:firebase-messaging:9.0.0'
}//Add this line
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)

和项目级别Gradle文件

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    classpath 'com.google.gms:google-services:3.0.0'
}
}
allprojects {
repositories {
    mavenCentral()
    jcenter{ url "http://jcenter.bintray.com/" }
    maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Run Code Online (Sandbox Code Playgroud)

小智 47

我通过添加"maven {url" http://jcenter.bintray.com "}"项目级Gradle文件来解决同样的问题

maven { url "http://jcenter.bintray.com"}
Run Code Online (Sandbox Code Playgroud)

  • 太感谢了。我花了将近 30 多个小时,尝试了几种方法,但这一种对我有用。 (4认同)

小智 43

此问题可能是由于某些受限制的Internet连接...如果您在某些受限制的网络上安装构建工具,则可能无法安装所需的证书...因此请尝试更改网络连接....为我工作.... .

  • 是的,这对我也是如此。我在公司网络上,当我切换时它工作。 (3认同)
  • 为我工作......早些时候,我在我的大学网络上工作,但我改为我的智能手机网络,它为我工作。 (2认同)
  • 遇到同样的问题,原来我打开了代理。禁用它并且它起作用了。 (2认同)

小智 11

在 Tools->Android->SDK Manager->Tools->Server Certificates 导入您的公司证书


小智 8

我之前遇到过Maven构建的这个问题.这是因为我在受限制的办公室网络中工作.您需要在密钥库中导入所需的证书.

按照以下问题"无法找到所请求目标的有效证书路径"的答案中的步骤 ,但浏览器说它没问题

(对fienames/pathnames使用双引号)

注意:我现在无法从我解决问题的地方找到确切的来源,如果我得到它,我会更新它


oza*_*kan 7

如果您在办公室,请使用智能手机网络。我认为它会起作用。

  • 这不是解决方案 (10认同)

小智 7

如果您在具有 SSL 拦截功能的企业代理后面运行,则需要按照以下步骤信任您的 HTTPS 代理证书:

\n
    \n
  • 在 Android Studio 中,打开文件 -> 设置\n
      \n
    • 在工具 -> 服务器证书中\n
        \n
      • 勾选\xe2\x80\x98自动接受不可信证书\xe2\x80\x99
      • \n
      • 另请单击 \xe2\x80\x98+\xe2\x80\x99 并手动添加企业代理根证书。
      • \n
      \n
    • \n
    • 在外观和行为 -> 系统设置 -> HTTP 代理\n
        \n
      • 设置您的公司代理 URL 和端口详细信息
      • \n
      \n
    • \n
    \n
  • \n
  • 下载密钥库资源管理器:http://keystore-explorer.org/downloads.html
  • \n
  • 在 KeyStore Explorer(以管理员身份运行)中,打开 Android Studio JRE 证书存储:C:\\Program Files\\Android\\Android Studio\\jre\\jre\\lib\\security\\cacerts\n
      \n
    • 密码应为 \xe2\x80\x98changeit\xe2\x80\x99
    • \n
    • 导入企业代理根证书并保存。
    • \n
    \n
  • \n
  • 在 Android Studio 中,选择“文件”->“使缓存无效并重新启动”
  • \n
\n


Car*_*res 7

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

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

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

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

在此处输入图片说明

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

在此处输入图片说明

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

在Android Studio中打开Preferences -> Tools -> Server Certificates,包装盒上的Accepted certificates点击加号图标(+),搜索你以前保存的证书,然后单击ApplyOK

在此处输入图片说明

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

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

在此处输入图片说明

复制JDK Location的路径,打开终端,将你的目录改为该路径,例如执行:

cd /Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/
Run Code Online (Sandbox Code Playgroud)

(不要忘记转义空格,“\”)

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

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

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

  • 如果您使用 jdk 11: ./jre/lib/security/cacerts 应该是: ./lib/security/cacerts (2认同)

小智 6

我刚刚遇到类似的问题,发现一系列步骤确实对我有所帮助。当然,其中很少有将网络更改为更好的网络的方法。或者,如果您只有一个网络,请尝试重新连接到网络,然后简单地确认/重新启动您的android studio。如果仍然显示错误,则需要在存储库中添加“ maven”,并将其指向如下所示的链接:maven {url“ http://jcenter.bintray.com ”}

最后,转到*文件*设置*构建,执行和部署* Gradle * Android Studio --------并选中启用maven存储库选项。

之后,只需清洁并重建您的APP,您就可以开始使用了。