android安装证书为系统证书

Author Avatar
贾康 7月 05, 2019

问题来源

最近在抓手机上的包,但是出现一个有意思的问题,即

1
2
3
4
5
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler,
SslError error) {
Log.d("sslError",error.toString());
}

webviewClient 会接到 error code为 3,在官网上查到3 代表是不被信任

解决经过

官方博客上发现从7.0开始应用就不信任用户的证书了,所以我的任务是把证书添加到系统里,找到解决方案如下:

  1. 安装用户证书。
  2. 把证书从/data/misc/user/0/cacerts-added 移动到/system/etc/security/cacerts
  3. 再次抓包试下

诡异的事情出现了! 这次sslErrorCode 返回了5,invalid,因为我的证书是用burp导出的,而且在系统里可以看见是启用的,所以很困惑。然后折腾了半天用charles导出证书再试就可以了。所以问题可能出在burp的证书上。

折腾。

在试了半天还是不行后,我决定翻一翻源码,于是我在我的aosp根目录下
grep -inr 'new SslErrorHandler( 结果没有找到调用!我觉得这太不可思议了。列入未解之谜吧。可能和chromium有关系