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

根据自己的环境,选择对应的即可。安装到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是面向不同的设备,就无法使用,因为不同的设备签名文件不一样,甚至引起安装冲突等情况。这个方法是针对系统应用开发

相关推荐

  1. Mac 生成Android签名证书 .keystore文件

    2024-03-28 18:50:04       48 阅读
  2. Android如何对应用进行系统签名

    2024-03-28 18:50:04       24 阅读
  3. Android源码中生成系统签名文件

    2024-03-28 18:50:04       37 阅读
  4. Android debug带系统签名

    2024-03-28 18:50:04       46 阅读
  5. Android 开发制作系统签名

    2024-03-28 18:50:04       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-28 18:50:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-28 18:50:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-28 18:50:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-28 18:50:04       20 阅读

热门阅读

  1. linux连接不到docker端口

    2024-03-28 18:50:04       20 阅读
  2. C++(5): std::ofstream的使用

    2024-03-28 18:50:04       18 阅读
  3. 递归算法 分析json字符串,自制简易表达式

    2024-03-28 18:50:04       23 阅读
  4. 【备忘录】Docker 2375远程端口安全漏洞解决

    2024-03-28 18:50:04       19 阅读
  5. 跨境电商商品采集API接口

    2024-03-28 18:50:04       24 阅读
  6. 面试算法-115-组合总和

    2024-03-28 18:50:04       17 阅读
  7. C#___锁(lock)

    2024-03-28 18:50:04       17 阅读
  8. 数据分类分级赋能企业数据安全建设(附下载)

    2024-03-28 18:50:04       22 阅读
  9. Sprinboot vue elementui考勤管理系统

    2024-03-28 18:50:04       24 阅读
  10. 快速部署docker-compose环境

    2024-03-28 18:50:04       21 阅读