工作中经常需要修改AOSP的代码,定制特定的ROM方便做应用程序分析。
但是,由于需要抓取HTTPS的包进行分析,所以,每次刷机后都要倒一个根证书到手机中,非常麻烦。那能不能直接将这个根证书添加到AOSP的代码中,直接包含在编译出的ROM中呢?答案当然是肯定的。
其实,AOSP包含的所有根证书都位于“libcore/luni/src/main/files/cacerts”或者是“system/ca-certificates”这个目录下,并且所有根证书的格式都是PEM格式的。
每个证书的命名规则如下:
<Certificate_Hash>.<Number>
文件名是一个Hash值,而后缀是一个数字。
文件名可以用下面的命令计算出来:
openssl x509 -subject_hash_old -in <Certificate_File>
请特别注意要在参数后加“_old”,否则算出来的Hash值是不对的。
后缀名的那个数字只是为了防止文件名冲突的,比如如果两个证书算出的Hash值是一样的话,那么一个证书的后缀名数字可以设置成0,而另一个证书的后缀名数字可以设置成1。
最后,只要把这个改好名称的证书文件丢到“libcore/luni/src/main/files/cacerts”这个目录下,再重新编译AOSP代码就可以了。