APK签名制作以及签名中的SHA信息获取

Posted ssdq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APK签名制作以及签名中的SHA信息获取相关的知识,希望对你有一定的参考价值。

一 制作.jks或者.keystore签名

方便一点的操作就是在androidStudio里面通过图形界面来制作了,这里使用命令行来制作。

keytool.exe -genkey -alias <key0> -keyalg RSA -validity 10000 -keystore <keyname.keystore>

上面的keytool在安装了JDK之后就有了,跟java/javac在同一个目录下。

上面的一行代码表示制作一个使用RSA算法、别名为“key0”、有效期为10000天、输出名字为“keyname.keystore”的密钥,然后根据提示输入信息就行了。

技术图片

制作后有警告,可以按照警告重新制作。

 

二 制作.pk8/.x509.pem文件的操作

make_key platfrom ‘/C=CN/ST=GuangDong/L=ShenZhen/O=Hello/OU=Hello/CN=name/emailAddress=hello@world.com‘

上面制作的密钥用于编译android系统ROM,需要在ROM开发环境下进行,输入命令后按照提示操作就行。

那个“make_key”是一个shell脚本,位于源码的“development/tools”路径下。

 

三 使用.jks/.keystore给应用签名

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore keyname.jks -storepass 12345678 Hello.apk key0

上面表示使用“keyname.jks”密钥文件对“Hello.apk”进行签名,密钥的存储密码为“12345678”,密钥的别名为“key0”。

上面的“jarsigner”安装JDK之后就有了,跟java/javac同一个目录。

 

四 使用.pk8/.x509.pem给应用签名

java -jar SignApk.jar platform.x509.pem platform.pk8 in.apk out.apk

上面的操作是使用平台密钥给应用签名,平台的源码编译出ROM时会生成一个“SignApk.jar”,在“outhostlinux-x86frameworksignapk.jar”。

这样签名之后的应用就具备平台签名了。

 

五 查看APK包中的签名SHA信息

把APK包里面的META-INFxxx.RSA文件弄出来,然后执行“keytool -printcert -file /path/of/xxx.RSA”即可。

怎么打开APK包?直接压缩软件解压,或者修改后缀名为“zip”之后解压。

技术图片

 

六 查看.jks/.keystore中的SHA信息

keytool -list -v -keystore key.jks

 

七 查看.pk8/.x509.pem中的SHA信息

openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
openssl pkcs12 -export -in platform.x509.pem -out platform.p12 -inkey platform.pem
keytool -importkeystore -destkeystore ./platform.jks -srckeystore ./platform.p12 -srcstoretype PKCS12
keytool -list -v -keystore platform.jks

我没找到更好的方法,只是之后进行的查看,不太便捷。

 

以上是关于APK签名制作以及签名中的SHA信息获取的主要内容,如果未能解决你的问题,请参考以下文章

Android 如何查看apk签名信息的MD5(SHA1和SHA256也可以)

android 生成签名证书

通过AndroidStudio获取签名文件信息

Android生成签名以及获取SHA1、MD5值

Android apk签名详解——AS签名获取签名信息系统签名命令行签名

获取APK/签名文件的SHA1证书,MD5