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”的密钥,然后根据提示输入信息就行了。

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

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

 

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

make_key platfrom ‘/C=CN/ST=GuangDong/L=ShenZhen/O=Hello/OU=Hello/CN=name/‘

上面制作的密钥用于编译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”,在“out\host\linux-x86\framework\signapk.jar”。

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

 

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

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

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

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

 

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

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