记录解决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
推荐阅读
-
Oracle RAC之--安装过程中碰到的问题及解决方法
-
BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程
-
PHP调用存储过程返回值不一致问题的解决方法分析
-
MySQL redo死锁问题排查及解决过程分析
-
mysql中RAND()随便查询记录效率问题和解决办法分享
-
BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程
-
iOS WKWebView中MessageHandler内存泄漏问题的完美解决过程
-
MySQL redo死锁问题排查及解决过程分析
-
使用vuex解决刷新页面state数据消失的问题记录
-
iOS WKWebView中MessageHandler内存泄漏问题的完美解决过程