unable to find valid certification path to requested target拉不了包处理

本文提供了解决Android Studio中依赖包下载失败的详细步骤,包括手动下载并放置依赖包到正确目录、配置Gradle仓库镜像、导入证书及调整Gradle版本等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2020年7月18日 关于拉不了依赖包的情况。终于是找到一个相对合适的解决方案了。

首先,我们下载的依赖包,都会放在

C:\Users\你的用户名\.gradle\caches\modules-2\files-2.1 文件夹下.

比如我的:

在这下面有很多依赖包。

举个栗子。假设as报错,提示无法下载aria-core-3.6.6.aar。但是有提供的连接,点开可以从浏览器正常下载。好的。那我们就从浏览器上下载下来放到桌面。这时候打开上面的目录。到files-2.1目录下。这时候需要一点小聪明了。在该目录下搜索aria

看搜索结果,比如aria-annotations这个文件夹,用脚指头想都知道肯定和aria-core有关联。找到aria-annotations的目录,并返回到他的上一级

如上图所示。注意这里你的文件夹可能没有aria-core这个文件夹哈。找到上图这个目录会后,如果没有aria-core文件夹。就自己手动创建一个。你缺的什么jar包,就用你下载下来的jar包名字命名这个文件夹。应该懂吧?模仿其他文件夹命名。

同理进去之后创建一个3.6.6的文件夹。为什么创建这个文件夹呢?首先要明白。as没法下载aria-core-3.6.6.aar。这个3.6.6就是下载下来jar包的版本。参考aria-annotations文件夹,他的下一级就是版本号。所以这里我们也创建一个版本号的文件夹。之后打开我们创建的3.6.6文件夹。

我们还需要创建一个文件夹

 这个文件夹的命名怎么做呢?

还记得我们在桌面下载下来的jar包吧。打开cmd。

输入:

certutil -hashfile jar包路径 SHA1

可以得到一个sha1值 

复制这个值。

回到我们刚刚的文件夹目录,就是3.6.6文件夹下,我们在创建一个文件夹,就拿复制的值命名。

然后把下载下来的jar包丢进去 。就完事了。

as点击sync now 或者重启as一下。就能运行起来了!!

 

 

下面的内容属于心路历程。仅供参考.上面的方法是一定可以的。之前弄kotlin也是用的这个方法。as无法下载kotlin相关依赖包。我也是手动放到目录里面去的。最大的问题就是需要一个一个的下载包。耗时。

2020年3月8日,我感觉这个问题我都可以连载了。。。。哈哈哈。在出现问题后,用旧方法各种尝试无果,介绍一下新方法,这算是这次最简单的处理方法了。之前我卸载重装,都是去的官网,这次我们换成中文社区那边下载:http://www.android-studio.org/ 我当前下载版本:(换成中文社区那边是因为官网3.6版本不是很喜欢。。。)

从中文社区那边下载的是可以跑起来的,原先是新建项目业报无法找到证书有效路径,xxxx包没下载问题。 

3月9日。就是第二天,又不行了、。、。

经过一番折腾可以了。我也不知道哪一步是关键的·。记录下处理的内容:

1、在C:\Users\Administrator\.gradle路径下,创建init.gradle

allprojects{
    repositories {
        def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
        all { ArtifactRepository repo ->
            def url = repo.url.toString()
            if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {
                project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'
                remove repo
            }
        }
        maven {
            url REPOSITORY_URL
        }
    }
}

2、 在C:\Users\你的用户名\.gradle下

 图中最后那个文件打开,底部有加了:

systemProp.http.proxyHost=mirrors.neusoft.edu.cn
systemProp.http.proxyPort=80

3、去jcenter官网,下了个证书,然后加到as中,当然阿里云的那个也加了证书

4、修改gradle版本

 

 希望对你有帮助哈O(∩_∩)O哈哈~

 -------------------------------------------下面都是历史记录

2019-12-15,android studio版本3.5.3 。先说明一下,本篇文章最早是在10月份记录的,当时遇到的问题按照原来的方式确实解决了,但是后面又出现了这个问题,且一直无法解决,现在是最新的解决方案!!!!!而且!!!!我百度,google,stack overflow各种途径都看了,目前还没看到有又相同的方案。下面直接进入主题:

很多人说证书不被信任,手动导入证书就可以,确实是这样!!!但是,只看到了他们说导入证书jcenter那个网站的证书,我还增加了一份证书:https://services.gradle.org/就是这个网站的证书了!导入证书的方式可以看下本篇17号记录的内容。

新建项目后发现还是不行,请把版本等信息试试和我一样:

 注意:添加完新的证书后,我出现了单元测试包无法下载问题,更新下junit的版本就可以了.

【下面是从最早10月份开始的记录,重点看17号的记录,如何导入证书】

记录一次巨坑,花了一下午。坑死了啊!!!

Android studio打包的时候出现如下问题:

当时关注的重点是这里:

作为一名喜欢懒得搬砖工,自然喜欢直接百度了,然而很明显没有解决问题。 

 

看这句问题翻译是说没找到有效证书路径啊。顺着这个思路,找到了下面这两篇文章:

http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html

https://www.java-samples.com/showtutorial.php?tutorialid=210

这两篇就是说怎么添加一个证书的,添加到哪里?

于是就跟着上面大佬的指示开始做了,最后发现证书格式一直提示不对,提示说所输入的不是 X.509 证书!!我去,当时在网页获取证书的时候,我都清清楚楚看了格式的,支持X.509格式!!!没办法,在百度找找看吧,

keytool 错误: java.lang.Exception: 所输入的不是 X.509 证书   

在上面这篇文章中,跟着把格式做了转换,最终折腾成功了!!也成功导入了证书,然而还是一样的报错。

 

看来不是证书问题了,回头继续看看错误的代码提示,

看着意思是那个xxx-26.4.1.jar包没拿到吗,点击链接直接就让我下载。那就乖乖下载了,我想既然could not get这个包,那我手动重新引入没问题吧?复制到lib包,引入到app的build.gradle中,再试一次,还是不行!!! 

再次百度瞅瞅问题,这次百度的方向就是xxx-26.4.1.jar包找不到。

跟着百度的做法,依然没解决。

其中什么google()必须在jceter()上面之类的,但是我原本就是在上面的,无效,

还有意思是说把下面删除了重新build?

还好我新创建了项目,这样依然无效。。

这期间无助的我尝试过重启,全局代理爬墙,设置无代理,卸载AS安装低版本3.2(这里是个坑!),降低gradle版本,重新设置一个签名,设置阿里镜像版本等等都无效果。

后面总结发现,自己新建的项目也会出现这个问题,并且项目都是可以连接真机跑起来的,打包成debug版本也是可以,唯独打包成release版本有问题,于是就朝着这方面百度。

最后看到了这里:

升级完Android Studio3.2后,打包release出现的错误 升级完Android Studio2.3后,打包release出现的错误

文章里面提到:

试着添加之后成功了!!!!O(∩_∩)O哈哈~不容易!

原来3.2以后都来这茬了! 

关于在build.gradle中配置lintOptions选项:

android {
    lintOptions {
        // true--关闭lint报告的分析进度
        quiet true
        // true--错误发生后停止gradle构建
        abortOnError false
        // true--只报告error
        ignoreWarnings true
        // true--忽略有错误的文件的全/绝对路径(默认是true)
        //absolutePaths true
        // true--检查所有问题点,包含其他默认关闭项
        checkAllWarnings true
        // true--所有warning当做error
        warningsAsErrors true
        // 关闭指定问题检查
        disable 'TypographyFractions','TypographyQuotes'
        // 打开指定问题检查
        enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
        // 仅检查指定问题
        check 'NewApi', 'InlinedApi'
        // true--error输出文件不包含源码行号
        noLines true
        // true--显示错误的所有发生位置,不截取
        showAll true
        // 回退lint设置(默认规则)
        lintConfig file("default-lint.xml")
        // true--生成txt格式报告(默认false)
        textReport true
        // 重定向输出;可以是文件或'stdout'
        textOutput 'stdout'
        // true--生成XML格式报告
        xmlReport false
        // 指定xml报告文档(默认lint-results.xml)
        xmlOutput file("lint-report.xml")
        // true--生成HTML报告(带问题解释,源码位置,等)
        htmlReport true
        // html报告可选路径(构建器默认是lint-results.html )
        htmlOutput file("lint-report.html")
        //  true--所有正式版构建执行规则生成崩溃的lint检查,如果有崩溃问题将停止构建
        checkReleaseBuilds true
        // 在发布版本编译时检查(即使不包含lint目标),指定问题的规则生成崩溃
        fatal 'NewApi', 'InlineApi'
        // 指定问题的规则生成错误
        error 'Wakelock', 'TextViewEdits'
        // 指定问题的规则生成警告
        warning 'ResourceAsColor'
        // 忽略指定问题的规则(同关闭检查)
        ignore 'TypographyQuotes'
    }
}

上面是来自https://blog.csdn.net/berber78/article/details/60766091 扒拉来的~

 

今天17号。停了几天代码,很快就不熟悉了,今天新建项目,又特么相同的错误!

 这次试用证书方式解决了。

第一步打开网站:https://bintray.com/bintray/jcenter

我是google浏览器,

第二步。点击下图中的证书。

第三步,跟着下图点就对了。

 

继续~别停。

 

选择Base63编码的 X.509(.cer)格式的,别选错了。

选个地方保存下,我就先放桌面了。

点击下一步完成。

 然后我把它放在了d盘,方便一会写目录而已。

下面管理员权限打开cmd

进入android\android\jre\jre\lib\security 文件夹下,这是你安安装android studio的文件夹里面

然后执行

keytool -import -alias abc -keystore cacerts -file D://abc.cer

库密钥口令输入:changeit

是否信任:Y

证书导入成功

查看证书,密钥仍然是changeit  下面是查看证书

keytool -list -keystore cacerts -alias abc

完成!重启as,完美了~   开心的飞起!

 

 

没错我又回来了!。10月28日,带着公司的源码回家,发现又出现了这个问题。唉,为什么我总是命运坎坷

啥也不说了,直接上我的解决方案吧。希望对你有帮助吧

<think>嗯,用户遇到了Apollo客户端因为证书问题导致的SSL连接错误,具体报错是“unable to find valid certification path to requested target SSL handshake error”。这个问题通常和SSL证书的信任链有关,也就是说客户端不认可服务器提供的证书,可能因为证书是自签名的,或者没有正确安装到客户端的信任库中。 首先,我需要回忆一下Java如何处理SSL证书。Java有一个叫做cacerts的默认信任库,里面存放了受信任的CA证书。如果Apollo服务端使用的证书不是由这些受信任的CA签发的,比如自签名的或者内部CA签发的,那么Java客户端就会抛出这个错误。这时候,解决方法通常是将服务端的证书导入到客户端的信任库中。 接下来,用户可能需要确认证书的来源。如果是自签名的,需要导出证书,然后使用keytool工具添加到Java的信任库。具体步骤可能括从浏览器导出证书,或者使用openssl命令从服务器获取。然后执行keytool -import命令来添加证书。需要注意的是,Java的版本不同,默认的信任库路径可能不同,用户需要确认正确的路径。 另外,如果用户的环境是Docker容器,可能需要重新构建镜像,确保信任库的修改被含进去。或者在启动容器的时候挂载修改后的信任库文件。还有,检查Apollo客户端的配置是否正确,比如是否正确配置了SSL相关的参数,或者有没有可能暂时关闭SSL验证进行测试(虽然不推荐生产环境这么做)。 还有可能涉及到容器内的用户权限问题,比如之前的引用中提到过“unable to find user test”的错误,这可能和容器内的用户权限有关,但当前的问题更可能是证书的问题。不过需要确保执行命令的用户有权限修改信任库文件,否则会出现权限被拒绝的情况,比如在docker_start_user.sh脚本中提到的权限问题。 此外,用户可能需要检查服务端证书的详细信息,确认证书是否过期,域名是否匹配,以及证书链是否完整。有时候中间证书缺失也会导致这样的问题。可以使用openssl s_client -connect命令来检查服务端的证书链情况。 总结一下,解决步骤可能括:导出服务端证书,导入到Java信任库,处理容器环境下的信任库更新,检查证书的有效性和配置。同时,用户可能需要参考类似问题的解决方案,比如引用[3]中提到的用户不存在的问题,虽然不直接相关,但可能涉及到环境配置的问题,需要注意权限和路径的正确性。</think>### Apollo客户端SSL证书问题解决方案 #### 一、问题定位 出现`unable to find valid certification path to requested target`错误,表示Java客户端未信任服务端SSL证书。常见原因: 1. 服务端使用自签名证书或内部CA证书 2. 证书链不完整 3. 客户端未正确配置信任库 #### 二、解决方案步骤 ##### 1. 导出服务端证书 ```bash openssl s_client -connect <apollo-server-domain>:<port> </dev/null | sed -ne &#39;/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p&#39; > apollo.crt ``` *替换`<apollo-server-domain>`和`<port>`为实际地址* ##### 2. 导入证书到Java信任库 ```bash keytool -import -alias apollo_cert -keystore $JAVA_HOME/lib/security/cacerts -file apollo.crt ``` *默认密码:`changeit`* ##### 3. Docker容器特殊处理 若Apollo运行在容器中: ```dockerfile # Dockerfile中添加 COPY apollo.crt /usr/local/share/ca-certificates/ RUN update-ca-certificates ``` 或启动时挂载证书: ```bash docker run -v /path/to/certs:/etc/ssl/certs ... ``` #### 三、验证配置 ```java public class SSLVerify { public static void main(String[] args) throws Exception { URL url = new URL("https://your-apollo-config-url"); url.openConnection().connect(); } } ``` #### 四、替代方案(临时) 修改JVM参数(仅限测试环境): ```bash -Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值