记录解决java.security.cert.CertificateException 问题过程
团队在开发过程中,突然发现有一个业务失常,该业务对接了另一个团队开发的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
推荐阅读
-
记一次python 内存泄漏问题及解决过程
-
Table 组件构建过程中遇到的问题与解决思路
-
倒计时cocos定时器schude使用的过程中 帧率浮动较大导致执行时机不准确的问题解决
-
Java socket通讯实现过程及问题解决
-
Win7版IE10安装过程中的常见问题整理及解决
-
vue.js中v-on:textInput无法执行事件问题的解决过程
-
Centos7.4服务器安装apache及安装过程出现的问题解决方法
-
尝试加载Oracle客户端库时引发BadImageFormatException的问题记录和解决方式
-
MAC如何显示下载全记录列表以解决误删文件的问题
-
sqlserver2008查看表记录或者修改存储过程出现目录名无效错误解决方法