首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

certificatePinner不能使用okhttp引发SSLHandshakeException:找不到证书路径的CertPathValidatorException信任锚点

certificatePinner是一个用于安全证书校验的工具,它可以帮助开发人员在使用OkHttp库进行网络通信时,对服务器的SSL证书进行校验。当使用certificatePinner时,如果出现SSLHandshakeException异常并提示找不到证书路径的CertPathValidatorException信任锚点,可能是由于以下原因导致的:

  1. 证书链不完整:服务器返回的SSL证书链不完整,缺少了某些中间证书或根证书。这会导致无法构建完整的证书路径,从而引发异常。解决方法是确保服务器返回的证书链完整。
  2. 证书链不匹配:服务器返回的SSL证书链与客户端期望的证书链不匹配。这可能是由于服务器证书配置错误或客户端期望的证书链不正确导致的。解决方法是检查服务器证书配置,并确保客户端期望的证书链正确。
  3. 证书校验规则不匹配:certificatePinner使用固定的证书校验规则来验证服务器证书。如果服务器证书与规则不匹配,将引发异常。解决方法是更新certificatePinner的证书校验规则,以适应服务器证书的变化。

在使用certificatePinner时,可以考虑以下推荐的腾讯云相关产品和产品介绍链接地址:

  • SSL证书:腾讯云提供了SSL证书服务,可以为网站和应用程序提供安全的HTTPS访问。详情请参考:腾讯云SSL证书
  • 腾讯云API网关:腾讯云API网关可以帮助开发人员快速构建和管理API接口,提供了灵活的安全认证和访问控制功能。详情请参考:腾讯云API网关
  • 腾讯云CDN:腾讯云CDN是一种全球分布式加速服务,可以提供快速、稳定的内容分发,加速网站和应用程序的访问速度。详情请参考:腾讯云CDN

请注意,以上推荐的产品仅供参考,具体选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android安卓进阶之——一文带你了解抓包和反抓包

答案是配置你信任的网站证书或者配置信任的认证链。 **1.Android 官方配置信息证书 (声明:这种方法只能防篡改设备的根证书,防不了使用 Android7.0 以下的手机。)...OkHttp 配置信任认证链 (声明:这种方法是全方面防御,在 Android7.0 以下设备也能起作用)** 步骤①:写一个 CertificatePinner 的配置 其中的 add方法两个参数。...因为开启抓包后,根证书是 charles 的公钥,跟期望的 sha256 匹配不上。 一个很重要的点是,其实我们可以不用把3个 sha256 都加上。...CertificatePinner部分 验证结果 按照 OkHttp 官方指导配置完后,使用 charles 抓包看看还能不能在 Android 7.0 以下系统抓到包。...OkHttp的配置的方法,这么写: // 只信任网站对应的证书 CertificatePinner certificatePinner = new CertificatePinner.Builder()

2.9K40

APP攻防-资产收集篇&反证书检验&XP框架&反代理VPN&数据转发&反模拟器

//使用OkHttp进行SSL证书固定(SSL Pinning) public class SSLPinningActivity extends AppCompatActivity { @Override...//对"www.baidu.com"和"www.sohu.com"两个域名的证书指纹。这意味着应用将只信任这些网站使用指定证书指纹的SSL证书。...public void okhttp3(View view) { CertificatePinner leafCertPinner = new CertificatePinner.Builder...首先刷入Magisk面具 然后使用Lsposed 或者Xposed加载JustTrustme模块进行绕过客户端证书校验 这样基本上就绕过了客户端对服务端SSL证书的检测 其中涉及的操作包括...后进行刷入,这样magisk才算完整 后面使用PC端进行抓包的时候需要将证书(Charles或者Burp)导入到手机上 android 7之前证书可以直接导入到系统区,android 7之后版本系统只信任系统证书

14310
  • OkHttp基础概念解释

    缓存目录应该是私有的,且不被信任的应用不能够读取它的内容。让多个缓存同时访问相同的混存目录是错误的。...也没有规定如何验证对等的证书(HostnameVerifier)或者哪个证书可被信任(SSLSocketFactory)。 每一个URL确定一个特定路径,每个服务器包含很多的URL。...但是证书也不是完全安全的,CertificatePinner就是一个用来限制哪些证书和证书颁发机构可以被信任。证书锁定提升安全性,但是限制你的服务器团队更新他们的TLS证书的能力。...(certificate)); } } 自定义可信任的证书 当然,也可以使用自定义的证书来替换主机的证书,然后使用sslSocketFactory函数进行设置。...,OKHTTP实现了一个OkHostnameVerifier,对于证书中的IP及Host做了各种正则匹配,默认情况下使用的是这个策略。

    2.1K10

    移动端防抓包实践

    抓包Https有两个突破点 CA证书校验是否合法;数据传递过程中的加密和解密。如果是要抓包,则需要突破这两点的技术,无非就是MITM(中间人)伪造证书和使用自己的加解密方式。...截取Https的网络封包 正常情况下,Charles 是不能截取Https的网络包的,这涉及到 Https 的证书问题。...第二点:CA证书,这一块避免使用黑科技hook证书校验代码,或者拥有修改CA证书权限。思路:集中在可以判断是否挂载。...okhttp配置的方式只能对使用该网络框架进行数据传输的接口生效,并不能对整个app生效。 破解:将手机进行root,然后将代理证书放置到系统证书列表内,就可以绕过代码或配置检查了。...单向认证测试:进行网络请求,会提示SSLHandshakeException即ssl握手失败的错误提示,即表示app端的单向认证成功。

    1.9K10

    OKHttp源码解析(四)--中阶之拦截器及调用链

    如果是通过代理(Proxy)的链接,则包含代理信息(Proxy)。如果是安全链接,则还包括SSL socket Factory、hostname验证器,证书等。...每一个路由都是上述路由的一种格式 所以我的理解就是OkHttp3中抽象出来的Route是描述网络数据包传输的路径,最主要还是描述直接与其建立TCP连接的目标端点。...但通常情况下,使用系统默认收集的所有代理保存在列表proxies中 为OkHttpClient配置Proxy或ProxySelector的场景大概是,需要让连接使用代理,但不使用系统的代理配置情况。...请求Request出错不能继续使用 // We can't send the request body again....,OKHttp默认是没有提供Cookie管理功能的,所以如果想增加Cookie管理需要重写里面的方法,PS:如果重写CookieJar()需要注意loadForRequest()方法的返回值不能为null

    1.8K50

    一文读懂Https的安全性原理、数字证书、单项认证、双项认证等

    除了CA机构颁发的证书之外,还有非CA机构颁发的证书和自签名证书: 1)非CA机构即是不受信任的机构颁发的证书,理所当然这样的证书是不受信任的; 2)自签名证书,就是自己给自己颁发的证书。...当然自签名证书也是不受信任的。...: javax.net.ssl.SSLHandshakeException:     java.security.cert.CertPathValidatorException:         ...因为此种做法直接使我们的客户端信任了所有证书(包括CA机构颁发的证书和非CA机构颁发的证书以及自签名证书),因此,这样配置将比第一种情况危害更大。...单项认证保证了我们自己的客户端只能访问我们自己的服务器,但并不能保证我们自己的服务器只能被我们自己的客户端访问(第三方客户端忽略证书校验即可)。

    2.5K20

    第十二节 微服务https之间访问问题

    上面这个问题归结起来就是无法验证网站的证书,找不到证书验证链 针对这个问题,Java的证书验证系统与其他不同,将代理工具生成的证书作为可信根证书导入系统证书库,是存在问题的。...在java的认证需要使用JRE中证书库,所有必须把代理工具的证书加入到JRE的证书库中。...下面解决步骤: 首先jre证书路径在\jre\lib\security的目录下有个文件名cacerts 2.使用Keytool管理证书,路径在\jdk8\bin\keytool.exe下 F:\softinstall...打印证书请求的内容 -printcrl 打印 CRL 文件的内容 -storepasswd 更改密钥库的存储口令 使用 "keytool -command_name.../record/xzg.crt 提示设置输入口令,java默认口令是changeit,也可以设置其他口令,最后输入y信任此证书,执行成功后 ?

    2.2K31

    移动安全入门之常见抓包问题二

    作为信任的锚点TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm...我们使用postern工具对流量进行转发,但是发现只能抓到一点数据包。 查看日志的错误信息。...获取证书: 一般存放在App的raw或者assets目录下,常见证书后缀如下: .p12.bks.pfx 也可能无后缀名,如果在安装包内找不到证书的话,也可以使用objection hook java.io.File...定位关键点后通过代码去查看是否存在实体编码的证书密码,若不存在明文密码则可以通过去hook相关方法获取密码。 常见关键词。...通过跟踪发现了该证书密钥,如下: 案例二 app抓到包返回400。 疑似使用了双向证书认证,对app进行脱壳查看代码,直接搜索.p12发现几处关键点。

    1.4K20

    一桩由ssl证书过期引起的血案

    ssl证书使用的是阿里云 的【Symantec免费版 SSL】一年免费。 前段时间,运营小伙伴反馈,有两个网站不能正常使用。一个是使用登录不好用。另外一个是支付中心回调网银不好用。...path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed 完整的代码日志见...回到正题: 通过异常信息,可以很容易的判断与ssl相关,询问了运维的小伙伴,了解到,前段时间ssl证书过期,重新更换了证书。...好嘛,没有办法,只好下载代码,翻看代码,异常点是使用http client 的post请求,对ssl没有做任何处理。...由于,部分模块属于核心依赖的基础类,又不想大规模改动,于是尝试通过http client 绕过ssl证书的办法,经测试通过,以上两个问题,同时解决。

    2.3K50

    Okhttp如何开启的Http2.0

    生成随机对称密钥,使用证书中的服务端公钥加密,发送给服务端 服务端使用私钥解密获取对称密钥 不知道各位有没有思考过一个问题,为什么只要后端将接口升级到Http2.0的支持之后,客户端就能自动的把所有的请求切换到...2.0必须使用TLS的原因就是因为这个ALPN的拓展协议。 ? OkHttp Connection 分析 Okhttp是如何实现的这整个流程呢,我画了个大概的流程图。 ?...从拦截器实现可以发现,Okhttp实现了一个连接池,当ConnectionInterceptor被调用的时候,先是判断连接池内有没有空闲并且健康的可用连接,然后再使用连接去调度下一个拦截器,那么也就是一个...简单的说Okhttp就是抽象了下所有Tls,SSLSocket相关的代码,然后通过一个Platform,根据当前使用环境的不同,去反射调用不同的实现类,然后这个抽象的类去调用Platform的实现类代码...还有一点就是本文只介绍了前置操作,而关于Http2.0的分帧等操作你们可以看下这篇文章啊传送门之HTTP 2.0与OkHttp。

    5.5K40

    锦囊篇|一文摸懂OkHttp

    前言 最近都在学校上课,三天满课,剩下还要课程复习维持绩点,基本上维持周更也已经比较吃力了,不过还是会继续坚持,之后的推文基本上会在周天推,嘻嘻。...在面试中OkHttp作为我们基本属于必用的第三方库来说,也是一个非常重要的考点,所以对其原理的掌握也会让我们的能力得到一定的提升。...OkHttp官网地址:https://square.github.io/okhttp/ 基本使用 先一段引入关于OkHttp的使用,这是直接拉取了官网挂着的使用方法。...okhttp中使用的方法,整个项目的解析将围绕下面5个类进行。...final HostnameVerifier hostnameVerifier; // 主机名字确认 final CertificatePinner certificatePinner; // 证书链

    42130

    rfc 5280 X.509 PKI 解析

    使用策略来选举信任锚,该策略可能为使用分级PKI中的顶级CA,颁发验证者证书的CA,或者网络上的PKI中的CA。不管使用哪种可信锚,路径校验处理的结果都是相同的。...本章节的算法根据当前日期和时间对证书进行校验,相应的实现可能会支持根据过去某个时间点进行校验,注意该机制无法对超出该(有效)证书的有效期的时间点进行校验, 信任锚(trust anchor)作为算法的输入...当信任锚为自签(self-signed)证书时,该自签证书不包含在预期的证书路径中。Section 6.1.1.描述了信任锚作为路径校验算法的输入。...由于每条证书路径以某个特定的信任锚开始,因此没有要求要使用特定的信任锚来校验所有的证书路径。是否采用一个或多个trusted CA由本地决定。...Section 6.1中出现的路径校验算法没有假设信任锚信息由自签证书提供,且没有指明对这类证书的额外信息的处理规则。使用自签证书作为信任锚信息时,在处理过程中可以忽略这些信息。

    1.9K20

    彻底理解OkHttp - OkHttp 源码解析及OkHttp的设计思想

    OkHttp 现在统治了Android的网络请求领域,最常用的框架是:Retrofit+okhttp。...OkHttp 源码解析 1、OkHttp 的整体框架设计 建议将okhttp的源码下载下来,用AndroidStudio 打开,整篇文章是根据源码的分析来学习okhttp的设计技巧和思想,如果本篇文章有内容分析不到位的地方...image.png okhttp的使用方法 OkHttpClient client = new OkHttpClient(); 我们第一步先看一下okhttp的构造函数OkHttpClient()和一些配置相关...final HostnameVerifier hostnameVerifier;//主机名字确认 final CertificatePinner certificatePinner;/...) { //TODO 同时请求不能超过并发数(64,可配置调度器调整) //TODO okhttp会使用共享主机即 地址相同的会共享socket //TODO

    3.2K32

    UzzzzZ

    框架 如果不想使用夜神的Xposed框架,只需要更换降低安卓版本即可 夜神模拟器更换安卓版本的步骤 1、选择多开 2、选择添加模拟器中的三个点 随后安装安卓5即可 至于更低的版本...安卓实现Https的几种方式 1、通过OkHttp来实现 第三方库,OkHttp中进行SSL证书校验,有如下两种方式 1、CertificatePinner(证书锁定) 通过CertificatePinner...进行连接的OkHttp,在连接之前,会调用其Check方法进行证书校验 2、自定义证书和HostNameVerify来实现Https校验 OkHttp中如果不执行HostNameVerifier默认调用的是...,跟2一样,换成自定义的TrustManager让其信任所有证书。...2、绕过WebView onReceivedSslError检测 对上述提供的方法,反编译APK后在Jar包中搜索可以发现,使用了onReceivedSsLError进行检测 1、检测点InAppBrowser.clss

    33820

    非洲某银行APP安全分析

    框架 如果不想使用夜神的Xposed框架,只需要更换降低安卓版本即可 夜神模拟器更换安卓版本的步骤 1、选择多开 2、选择添加模拟器中的三个点 随后安装安卓5即可 至于更低的版本,暂时没研究夜神如何更换...安卓实现Https的几种方式 1、通过OkHttp来实现 第三方库,OkHttp中进行SSL证书校验,有如下两种方式 1、CertificatePinner(证书锁定) 通过CertificatePinner...进行连接的OkHttp,在连接之前,会调用其Check方法进行证书校验 2、自定义证书和HostNameVerify来实现Https校验 OkHttp中如果不执行HostNameVerifier默认调用的是...,跟2一样,换成自定义的TrustManager让其信任所有证书。...2、绕过WebView onReceivedSslError检测 对上述提供的方法,反编译APK后在Jar包中搜索可以发现,使用了onReceivedSsLError进行检测 1、检测点InAppBrowser.clss

    1.9K10

    UzzzzZ

    框架 如果不想使用夜神的Xposed框架,只需要更换降低安卓版本即可 夜神模拟器更换安卓版本的步骤 1、选择多开 2、选择添加模拟器中的三个点 随后安装安卓5即可 至于更低的版本...安卓实现Https的几种方式 1、通过OkHttp来实现 第三方库,OkHttp中进行SSL证书校验,有如下两种方式 1、CertificatePinner(证书锁定) 通过CertificatePinner...进行连接的OkHttp,在连接之前,会调用其Check方法进行证书校验 2、自定义证书和HostNameVerify来实现Https校验 OkHttp中如果不执行HostNameVerifier默认调用的是...,跟2一样,换成自定义的TrustManager让其信任所有证书。...2、绕过WebView onReceivedSslError检测 对上述提供的方法,反编译APK后在Jar包中搜索可以发现,使用了onReceivedSsLError进行检测 1、检测点InAppBrowser.clss

    27931

    快手抓包问题分析

    一般来说,常规方法无法抓安卓应用的 https 包,通常有以下几种可能: 证书信任问题。在 Android 7 以上,应用会默认不信任用户证书,只信任系统证书,如果配置不得当则是抓不到包的。...应用配置了 SSL pinning,强制只信任自己的证书。这样一来由于客户端不信任我们种的证书,因此也无法抓包。 应用使用了纯 TCP 传输私有协议(通常也会套上一层 TLS)。...这样http流量就绕过我们配置的代理,自然抓不到包。 当前的现象是数据能刷出来,那就说明并不是证书信任相关的问题。接下来就需要验证它究竟是使用了什么样的传输方式,对症下药。...值得注意的是,不要尝试使用 mitmproxy --certs 来配置证书,这种方式只能配置 leaf 证书,而不能配置根 CA 证书。...因此还是老老实实的把根证书放在默认路径下。 准备设备 为了方便测试,我在 arm 服务器上使用 redroid 准备了一台安卓虚拟机。

    4.4K10

    Android端Charles抓包

    2.手机上需要安装证书 第一步下载证书 打开浏览器,输入:chls.pro/ssl,就会自己下载到手机上,这里需要记住下载完成保存到本地的路径。...第二步安装证书 设置 ---> 更多设置 ---> 系统安全 ---> 加密与凭据 ---> 从SD卡安装,选择之前保存证书的路径。...如果应用程序运行的系统版本高于或等于24,并且targetSdkVersion>=24,则只有系统(system)证书才会被信任。所以用户(user)导入的Charles根证书是不被信任的。...Android 7.0 之后,Google 推出更加严格的安全机制,应用默认不信任用户证书(手机里自己安装证书),自己的app可以通过配置解决,但是抓其它app的https请求就行不通。...6.总结一下 HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了服务器证书公钥和HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会

    1.7K00

    Android 网络优化,使用 HTTPDNS 优化 DNS,从原理到 OkHttp 集成

    一、前言 谈到优化,首先第一步,肯定是把一个大功能,拆分成一个个细小的环节,再单个拎出来找到可以优化的点,App 的网络优化也是如此。...OkHttp 是一个处理网络请求的开源项目,是 Android 端最火热的轻量级网络框架。在 OkHttp 中,默认是使用系统的 DNS 服务 InetAddress 进行域名解析。...首先通过本地保存的根证书解开证书链,确认证书可信任,然后客户端还需要检查证书的 domain 域和扩展域,看看是否包含本次请求的 HOST。...这就引发出来 SNI 方案,SNI(Server Name Indication)是为了解决一个服务器使用多个域名和证书的 SSL/TLS 扩展。...OkHttp 既然暴露出 dns 接口,我们就尽量使用它。 四、小结时刻 现在大家知道,在做 App 的网络优化的时候,第一步就是使用 HTTPDNS 优化 DNS 的步骤。

    4K10

    HTTPS 原理浅析及其在 Android 中的使用

    (包含公钥),如果CA不被信任,则找不到对应CA的证书,证书也会被判定非法。...可能是购买的CA证书比较新,Android系统还未信任,也可能是服务器使用的是自签名证书(这个在测试阶段经常遇到)。   ...解决此类问题常见的做法是:指定HttpsURLConnection信任特定的CA集合。在本文的第5部分代码实现模块,会详细的讲解如何让Android应用信任自签名证书集合或者跳过证书校验的环节。...(自定义信任的证书集合,并使用客户端证书) makeContextToTrustAll (信任所有的CA证书,不安全,仅供测试阶段使用) (2) 单向验证并自定义信任的证书集合   在App中,把服务端证书放到资源文件下...(这些证书文件必须要放在指定的文件路径下,并其要保证名称相同),而后就可以加载服务端证书链到keystore,通过获取到的可信任并带有服务端证书的keystore,就可以用它来初始化自定义的SSLContext

    3.8K40
    领券