遇到Cause: unable to find valid certification path to requested target的另一种解决思路

hi,大家好啊!过了这么多天终于来给大家更新博客了,今天我遇到了一个问题(终于轮到你出问题了,嘲笑!)

好了,进入正题吧!我来说说我今天是怎么遇到这个问题的,当我要构建自己的一套图片处理的方式,也就是打包Glide的操作,放入Generated API中,可以理解为是一种批处理。并且自建了一个这样的moudle文件的子类(继AppGlideModule):
在这里插入图片描述
然后我Make Module,让AppGlideModule子类编译产生新的api,但是当我要make module时,错误出现了:

Cause: unable to find valid certification path to requested target
原因:找不到请求目标的有效证书路径

于是我抱着这个问题跑去问了度大仙,很多博主都是要求我去验证证书是否有效,突然去安装证书,不同的浏览器操作方法还不同:
谷歌浏览器
火狐浏览器

当然可能这是一种多数情况下比较可行的方法,但是今天巧了,我遇到的这个问题恰恰这个方法不可行,因为这个问题产生的原因就是有点点的与众不同,上面已经说过了,下面就说说我是怎么解决掉的吧:

原来在我导入阿里云云仓的时候网络协议http://…本来应该是https://…如下图:

buildscript {
    repositories {
        google()
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        //阿里云云仓镜像包
        jcenter()
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
        //阿里云云仓镜像包
        jcenter()
        
    }

因为我在make module的时候,

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    annotationProcessor 'androidx.annotation:annotation:1.0.0'
    implementation("com.github.bumptech.glide:glide:4.9.0") {
        exclude group: "com.android.support"
    }
    annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
    **//因为我在make module的时候,该条依赖包是以https://....这样的网络协议去进行网络访问的,而当时我在导入阿里云云仓镜像包的时候没有加s的,即http://...这样式的!!**
}

这样就是默认androidstudio只能以http://…的形式去进行网络访问,于是当以https://…这样的形式去拉取glide的依赖包时产生冲突,无法访问相应的网址,就有了无效证书这种错误。解决方法显而易见,阿里云云仓镜像包改为https://…

后来我又去深入理解了一下,http://…和https://…到底有什么区别:

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加 密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基 础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。 HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTPS和HTTP的主要区别

https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

想了解https到底是怎么进行网络通信:网址

所以在遇到类似的错误时,不要一味的相信大众的方法,还是要好好考虑考虑自己的问题究竟是怎么产生的。

总结:思路要拓宽,特殊问题要特殊对待,报错要由结果推理到源头;逆向思维很重要!!!

发布了9 篇原创文章 · 获赞 16 · 访问量 1801

猜你喜欢

转载自blog.csdn.net/weixin_43622246/article/details/104905486