前言
如果第三方模块被混淆,那hook方式均不能生效。这时就需要根据系统包去定位校验的函数,因此需要对安卓开发者是如何实现客户端证书校验的有一定了解,接下来就介绍这部分内容。
开发者实现客户端证书校验的本质是:证书/密钥 + 代码。
在形式上有:证书校验、公钥校验和Host(主机)校验。
一,证书校验
1.1 基于代码
1,获取PEM证书
2,配置
3,发送请求
1.2 基于配置
1,获取PEM证书
步骤同上…
2,配置
3,发送请求
证书发送到客户端后,客户端对证书进行base64编码,编码后得到的字符串就相当于是公钥。
二,公钥校验
公钥校验就是将证书进行 sha256 加密,得到密钥,然后基于密钥进行校验。
2.1 基于代码
1,获取sha256公钥
以下命令只需要修改 www.baidu.com:443 即可得到其他域名的 sha256 密钥。执行下列命令后,会自动向 百度 服务器发请求,下载证书,并生成 sha256 密钥。
>>>openssl s_client -connect www.baidu.com:443 -servername www.baidu.com | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
Zhv4cvwdHmEmE0edWEcIdmLf