欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记录解决java.security.cert.CertificateException 问题过程

程序员文章站 2022-03-31 08:34:00
团队在开发过程中,突然发现有一个业务失常...

团队在开发过程中,突然发现有一个业务失常,该业务对接了另一个团队开发的IM SDK,报错异常如下为:java.security.cert.CertificateException:Domain specific configurations require that hostname aware checkServerTrusted(X509Certificate[], String, String) is used.

开始的时候,我们以为是没有将业务接口域名配置到 network_security_config.xml导致,配置之后,问题依然存在,最后只好从接入的SDK源码分析,发现他们在发送请求之前,做了一次SSL 校验,该校验操作最终会调用到Android 系统提供的方法,该方法在异常情况下,会导致上述异常。

具体代码见system/frameworks/base/core/java/android/security/net/config/RootTrustManager.java类的checkServerTrusted方法

出现异常的地方已经找到,接下来就要分析为什么会出现异常了。

从源码角度,当我们使用HTTPs(SSL)进行网络请求的时候,需要配置network_security_config.xml文件,如果我们添加了一些网络参数配置,比如在一个或者多个domain-config中添加了pinning,android系统的证书校验方法就会失败,报错异常如上,而且这个异常是JNI异常。

这篇文章给出了解决方案,可以移步:https://blog.csdn.net/JoeySheng/article/details/109386608

 

 

 

本文地址:https://blog.csdn.net/JoeySheng/article/details/109385740