手机扫一扫访问本页内容

微信扫描点右上角"···"分享到好友或朋友圈

关闭
微信扫一扫可打开小程序

微信长按图片或搜“分享录”可打开小程序

关闭

用Android Studio打包签名应用并查看apk公钥、MD5、SHA1、SHA-256等签名信息

之前在《Android Studio生成Key Store打包含有app安装包证书的apk应用》中已经讲解了如何用Android Studio生成keystore来打包含有APP安装包证书的apk应用了。

打包完我们可以用keytool或jarsigner查看apk应用签名信息。

#方式一
keytool -printcert -jarfile app-release.apk
#方式二
jarsigner -verify -verbose -certs app-release.apk 

如果没正确签名apk,那么用keytool查询会报“不是已签名的 jar 文件”,用jarsigner查询则会报“jar 未签名”具体如下。

  s = 已验证签名 
  m = 在清单中列出条目
  k = 在密钥库中至少找到了一个证书
  i = 在身份作用域内至少找到了一个证书

没有清单。

jar 未签名。

apk应用未签名主要是build.gradle文件没配置对,照《Android Studio生成Key Store打包含有app安装包证书的apk应用》生成keystore然后把storeFile、storePassword、keyAlias、keyPassword配进来,重点是加上“v1SigningEnabled true”和“v2SigningEnabled true”这两个在旧版本开发工具是可以直接勾选的。

signingConfigs和buildTypes配置信息如下。

    signingConfigs {
        config {
            storeFile file('xxxx') // 支持相对路径与绝对路径
            storePassword 'xxxx'
            keyAlias = 'xxxx'
            keyPassword 'xxxx'
            v1SigningEnabled true //兼容v1
            v2SigningEnabled true //兼容v2
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.config
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }
}

打包后可以看到apk文件里的META-INF目录下有MANIFEST.MF、CERT.SF、CERT.RSA这些文件证明APP签名成功。

将“CERT.RSA”解压出来用“keytool -printcert -file CERT.RSA ”或者再用上面的keytool或jarsigner命令都能查看apk应用的签名信息了,但是你会发现都只显示“证书指纹的SHA1和SHA256”、“签名算法名称:SHA256withRSA”、“主体公共密钥算法: 2048 位 RSA 密钥”等部分信息,就算用“keytool -list -v -keystore fenxianglu.keystore”直接查询keystore也只能看到类似的结果,像备案APP还要用到公钥、MD5。

这个时候可以通过执行右边菜单栏Gradle下面的“signingReport”可以看到MD5、SHA1、SHA256、有些截止日期等。

如果Gradle下面没有“signingReport”可以通过点击Gradle下面那个图标在弹出来的“Run Anything”中输入“gradle signingReport”,即可打印出签名信息。

但是还是没法看到公钥,网上一些做法说可以通过下面的命令把keystore转成cer证书,再用操作系统自带工具查看公钥,macOS用钥匙串访问打开证书就可以看到公共密钥了。

keytool -export -alias xubingtao.cn -keystore fenxianglu.keystore -file fenxianglu.cer

但是你会发现到Windows看到的结果跟macOS的不一样,这是因为不同操作系统的证书存放格式、编码不同导致显示结果不同。备案拿这个就行了,下面那种方式查出来的字符串反而无法填进去!

其实可以直接用下面的命令就可以查看到keystore的公钥和私钥了,当然也可以用Java程序来读取keystore的公钥和私钥。

keytool -list -rfc --keystore fenxianglu.keystore | openssl x509 -inform pem -pubkey

展开阅读全文


上一篇:

下一篇:

服务器又要到期了鼓励一下吧
您还可以访问本站的小程序、公众号等所有端,或者下载APP, 在小程序、APP上可以评论文章以及保存图片还有在线客服哦,如您有任何疑问或建议可向作者提出意见反馈
扫码打开小程序可评论文章保存图片,在“我的”有实时在线客服哦,看效果?
关注我的公众号为您分享各类有用信息
分享录多端跨平台系统