查看Android app的证书和签名
apk签名实际上是对jar签名的重新利用,通过hash函数计算app内容。hash与开发者身份绑定在一起。
开发者私钥加密的证书意味着是自签名证书,无可信第三方保证。
apk中的证书保存在meta-inf文件夹下。可以将apk文件修改zip解压或通过反编译软件查看meta-inf文件夹
包含三个文件:cert.rsa cert.sf manifest.mf
其中 cert.rsa是公钥证书自签名,可以使用keytool查看内容
这是一个X.509 v3证书。包含如下内容
- owner所有者:公钥持有者
- issuer颁发者:为公钥提供保证的人
- serial number序列号:证书唯一标识
- valid from … until有效期:证书有效期,作为证书有效性验证
- certification fingerprints证书指纹:证书数字校验和,验证是否被篡改
其中与app相关的签名是 cert.sf 文件,可以使用 cat 命令查看
另外,manifest.mf文件跟cert.sf文件内容类似
两个文件都列出了各个资源文件的hash值,并经过了base64编码
三个文件的具体内容以及作用:
- manifest.mf: 声明资源
- cert.rsa: 公钥证书
- cert.sf: 包含app所有资源,负责对app签名,包含jar指定的密码学意义上的签名
另外,可以使用openssl来查看完整的X.509证书
openssl pkcs7 -inform der -in cert.rsa -noout -print_certs -text