背景介绍
在Android平台,当我们使用HTTPs(SSL)进行网络请求的时候,需要配置network_security_config.xml,如果我们在一个或者多个domain-config节点中配置网络安全属性,例如cert pinning,系统的SSL校验程序(verity_cert_chain_platform_specific)就会爆出JNI异常(CertificateException)。下面是一个network_security_config示例
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">azurewebsites.net</domain>
<pin-set expiration="2021-09-24">
<pin digest="SHA-256">...</pin>
<pin digest="SHA-256">...</pin>
</pin-set>
</domain-config>
</network-security-config>
有一点需要注意,上述异常的发生场景如下:默认的OpenSSL校验方法失败了,而我们希望系统校验程序(verify_cert_chain_platform_specific