一 制作.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
我没找到更好的方法,只是之后进行的查看,不太便捷。