Android 系统应用 pk8签名文件转jks或keystore教程

一、介绍

        签名文件对于我们在做应用开发中,经常遇到,且签名文件不仅仅是保护应用安全,还会涉及到应用与底层之间的数据共享和API文件等问题。

        在Android中,签名文件同样也存在这个问题。但是android中又区分系统应用和普通应用。系统应用可以通过android:sharedUserId="android.uid.system"同享系统uid,可以获取更高的权限。

所以在做系统应用开发的时候,经常需要使用AOSP的签名。

二、PK8签名转jks或者keystore

pk8只是aosp中的一种,编译时需要的签名文件都在build/make/target/product/security下面。在生成或者转jks的时候,需要借助openssl这个工具。

正常转有两种:window和Linux,通常,我们在window比较多,下面我将介绍window下的转jks的教程

Window环境下的教程

1.安装openssl:

Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

Android 系统应用 pk8签名文件转jks或keystore教程_第1张图片

根据自己的环境,选择对应的即可。安装到C盘,都是默认安装。

2.将platform.pk8和platform.x509.pem从AOSP的build下(build/target/product/security)拷贝一份出来。

需要将Java切到jdk11,

手动切Jdk版本:set path=jdk bin+&path&,例如:set path=F:\android\jdk\bin;&path&

编译步骤:

1.pk8 私钥解密pem格式

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt

platform.priv.pem:为输出的pem密钥格式

2.私钥通过公钥pem加密pk12, 需要输入两次密码

openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name  +别名

3通过java的keytool 工具生成 keystore, 别名需要跟步骤2的一致,同样输入两次密码

3.1jsk:
keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass  password-alias +别名

3.2keystore
keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass password-alias +别名

password:生成的密码,

别名:和第二步的别名一样,保持一致

生成后会报一个warm:

uses the MD5withRSA signature algorithm which is considered a security risk and is disabled

进行第四步

4.进行迁移:需要密码,是之前输入的确定密码
 keytool -importkeystore -srckeystore platform.jks -destkeystore platform.jks -deststoretype pkcs12

接下来在bin下面platform.jks是新的秘钥文件,platform.old.jks 是第三步的文件

三、总结

1.需要JDK11,可以通过手动set,也可以改本地的

2.开发工具如果需要签名也需要JDK11

3.需要再Manifest中新增android:sharedUserId="android.uid.system",这样framework获取你的uid进行共享

4.注意:一般这种做法是针对你的app只在一个系统中使用,如果你的app是面向不同的设备,就无法使用,因为不同的设备签名文件不一样,甚至引起安装冲突等情况。这个方法是针对系统应用开发

你可能感兴趣的:(AOSP,android,Framework,android,aosp,系统应用开发)