查看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

您可能还喜欢...