keystore签名文件与platform.pk8、platform.x509.pem之间的相互转换

article/2025/10/7 11:15:38

文章目录

    • 一. platform.pk8、platform.x509.pem转成keystore
        • 1.下载keytool-importkeypair工具
    • 二. keystore转成platform.pk8、platform.x509.pem文件
        • 1. 先把keystore文件转换为pkcs12格式
        • 2. 将PKCS12 dump成pem
        • 3. 生成pk8格式的私钥

一. platform.pk8、platform.x509.pem转成keystore

有时候我们需要实现如静默升级或安装应用之类的系统级功能的时候,我们除了需要将应用预装为系统应用之外,还需要使用系统签名对我们的应用进行签名。而系统的签名文件与我们常用的keystore普通应用签名文件是不同的,它是由platform.pk8、platform.x509.pem两个签名文件组成,虽然可以通过如下命令对apk进行签名:

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk

但相比如直接通过Androidstudio配置打包出签好名的apk总归是不方便,那能不能将其转为keystore之类的签名文件呢?当然可以。

注:signapk.jar在安卓工具箱中,下载SignApk.jar
在这里插入图片描述

1.下载keytool-importkeypair工具

注意:工具不能在Windows环境下使用,本文使用的是虚拟机Ubuntu系统
下载keytool-importkeypair之后,将platform.x509.pem、platform.pk8放到keytool-importkeypair的统计目录下执行如下命令:

./keytool-importkeypair -k system.keystore -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias test
  • -k 表示要生成的 keystore 文件的名字,这里为 system.keystore
  • -p 表示要生成的 keystore 的密码,这里为 123456
  • -pk8 表示要导入的 platform.pk8 文件
  • -cert 表示要导入的platform.x509.pem
  • -alias 表示给生成的 keystore 取一个别名,这是命名为 test

在这里插入图片描述
在这里插入图片描述
可以看到工具的同级目录下已经生成了一个system.keystore文件, 可以直接拿到Androidstudio中配置使用了。

二. keystore转成platform.pk8、platform.x509.pem文件

背景:最近做一个机顶盒的launcher项目,是一个接手项目,需要静默升级,里面用的签名是厂商A提供的一个system.keystore的签名文件,现在需要在厂商B的盒子上安装,同样要支持静默升级,但厂商B盒子的系统签名和厂商A的系统签名不同,所以有两个选择:一个是针对厂商B的盒子使用厂商B的系统签名,但这样就需要分开升级,维护两个升级任务;另外一个就是给厂商B提供当前签名对应的系统签名,但手上只有一个system.keystore文件,厂商A出于一些考虑并未提供对应的platform.pk8、platform.x509.pem两个系统签名文件,由于不想同一个应用去维护多个升级任务,所以只能想办法将system.keystore转为platform.pk8、platform.x509.pem文件,在此做一个记录。

下面这些操作均在linux环境下执行

1. 先把keystore文件转换为pkcs12格式

keytool -importkeystore -srckeystore system.keystore -destkeystore tmp.p12 -srcstoretype JKS  -deststoretype PKCS12 

在这里插入图片描述
如下图,当前目录下生成了一个tmp.p12文件:
在这里插入图片描述

2. 将PKCS12 dump成pem

openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem

然后以文本的形式打开tmp.rsa.pem文件

Bag AttributesfriendlyName: platformlocalKeyID: 54 69 6D 65 20 31 35 39 37 36 33 31 31 37 36 33 32 39 
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
.......
-----END PRIVATE KEY-----
Bag AttributesfriendlyName: platformlocalKeyID: 54 69 6D 65 20 31 35 39 37 36 33 31 31 37 36 33 32 39 
subject=C = US, ST = California, L = Mountain View, O = Android, OU = Android, CN = Android, emailAddress = android@android.comissuer=C = US, ST = California, L = Mountain View, O = Android, OU = Android, CN = Android, emailAddress = android@android.com-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----

复制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建个文件) platform.x509.pem,如下图:
在这里插入图片描述
这样就得到了platform.x509.pem文件了。

接下来,复制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem
在这里插入图片描述

3. 生成pk8格式的私钥

执行如下命令,生成platform.pk8文件:

openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out platform.pk8 -nocrypt

在这里插入图片描述

注:-nocrypt 这个参数设定key加密 如果设置了这个参数 下面签名 只要证书+key 不需要密码了 如果加密 应该 openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 接下来输入密码

至此platform.pk8、platform.x509.pem两个签名文件转换完成


http://chatgpt.dhexx.cn/article/xIx90wQv.shtml

相关文章

【STM32F407的DSP教程】第14章 DSP统计函数-最大值,最小值,平均值和功率

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第14章 DSP统计函数-最大值&#xff0c;最小值&#xff0c;平均值和功率 本期教程主要讲解统计函数中的最大值&#xff0c;最小值&#xff0c;平均值和功率的计算。 目录 …

【STM32H7的DSP教程】第7章 ARM DSP源码和库移植方法(IAR8)

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第7章 ARM DSP源码和库移植方法&#xff08;IAR8&#xff09; 本期教程主要讲解ARM官方DSP源码和库的移植以及一些相关知识的介绍。 目录 第7章 ARM DSP源码和库移植方法&a…

【STM32H7的DSP教程】第14章 DSP统计函数-最大值,最小值,平均值和功率

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第14章 DSP统计函数-最大值&#xff0c;最小值&#xff0c;平均值和功率 本期教程主要讲解统计函数中的最大值&#xff0c;最小值&#xff0c;平均值和功率的计算。 目录 …

【STM32F429的DSP教程】第14章 DSP统计函数-最大值,最小值,平均值和功率

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第14章 DSP统计函数-最大值&#xff0c;最小值&#xff0c;平均值和功率 本期教程主要讲解统计函数中的最大值&#xff0c;最小值&#xff0c;平均值和功率的计算。 目录 …

(十)DSP28335基础教程——ECAP实验(超声波测距)

0 前言 这一节我们来学习DSP的ECAP模块的功能。实验目标&#xff1a;通过超声波测距模块&#xff0c;将采集所测量距离显示在电脑串口助手上。 本节将分为硬件部分、软件部分和实验展示三个方面进行介绍&#xff0c;不清楚的欢迎留言。 1 硬件部分 需要四个硬件如图1所示&a…

【STM32F407的DSP教程】第13章 DSP快速计算函数-三角函数和平方根

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第13章 DSP快速计算函数-三角函数和平方根 本期教程开始&#xff0c;我们将不再专门的分析DSP函数的源码&#xff0c;主要是有些DSP函数的公式分析较麻烦&#xff0c;有兴…

【STM32H7的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第18章 DSP控制函数-更好用的SIN&#xff0c;COS计算 本期教程主要讲解控制函数中的cos和sin函数数值的获取&#xff0c;这里使用的函数比起第13章中使用的sin和cos函数数值…

【STM32H7的DSP教程】第13章 DSP快速计算函数-三角函数和平方根

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第13章 DSP快速计算函数-三角函数和平方根 本期教程开始&#xff0c;我们将不再专门的分析DSP函数的源码&#xff0c;主要是有些DSP函数的公式分析较麻烦&#xff0c;有兴趣…

【STM32F407的DSP教程】第49章 STM32F407的自适应滤波器实现,无需Matlab生成系数(支持实时滤波)

完整版教程下载地址&#xff1a;事隔五年之后&#xff0c;开启第2版DSP数字信号处理和CMSIS-NN神经网络教程&#xff0c;同步开启三代示波器&#xff0c;更至49章&#xff08;2021-09-20&#xff09; - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!http://www.armbbs.cn/for…

matlab的cheblord函数,【安富莱DSP教程】第39章 IIR滤波器的Matlab设计

第39章 IIR滤波器的Matlab设计 本章节讲解IIR滤波器的Matlab设计,主要包括巴特沃斯滤波器,切比雪夫I型和II型滤波器以及椭圆滤波器。 39.1 巴特沃斯滤波器的设计 39.2 切比雪夫滤波器的设计 39.3 椭圆滤波器的设计 39.4 总结 39.1 巴特沃斯滤波器的设计 39.1.1butter函数 功能…

【STM32H7的DSP教程】第48章 STM32H7的中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据的实时滤波)

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第48章 STM32H7的中值滤波器实现&#xff0c;适合噪声和脉冲过滤&#xff08;支持逐个数据的实时滤波&#xff09; 本章节讲解中值滤波器实现&#xff0c;适用于噪声和脉冲…

【STM32F429的DSP教程】第49章 STM32F429的自适应滤波器实现,无需Matlab生成系数(支持实时滤波)

完整版教程下载地址&#xff1a;事隔五年之后&#xff0c;开启第2版DSP数字信号处理和CMSIS-NN神经网络教程&#xff0c;同步开启三代示波器&#xff0c;更至49章&#xff08;2021-09-20&#xff09; - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz!http://www.armbbs.cn/for…

【STM32F429的DSP教程】第25章 DSP变换运算-快速傅里叶变换原理(FFT)

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第25章 DSP变换运算-快速傅里叶变换原理&#xff08;FFT&#xff09; 在数字信号处理中常常需要用到离散傅立叶变换(DFT)&#xff0c;以获取信号的频域特征。尽管传统的DFT…

【STM32F429的DSP教程】第33章 STM32F429不限制点数FFT实现

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第33章 STM32F429不限制点数FFT实现 本章主要讲解不限制点数FFT的实现。 目录 33.1 初学者重要提示 33.2 不限制点数FFT移植 33.2.1 移植FFT相关文件 33.2.2 添加路径…

【STM32H7的DSP教程】第16章 DSP功能函数-数据拷贝,数据填充和浮点转定点

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第16章 DSP功能函数-数据拷贝&#xff0c;数据填充和浮点转定点 本期教程主要讲解功能函数中的数据拷贝&#xff0c;数据填充和浮点数转换为定点数。 目录 第16章 …

【STM32F407的DSP教程】第33章 STM32F407不限制点数FFT实现

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第33章 STM32F407不限制点数FFT实现 本章主要讲解不限制点数FFT的实现。 目录 33.1 初学者重要提示 33.2 不限制点数FFT移植 33.2.1 移植FFT相关文件 33.2.2 添加路径…

【STM32H7的DSP教程】第3章 Matlab简易使用之基础操作

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第3章 Matlab简易使用之基础操作 本期教程开始讲解Matlab的简易使用之基础操作&#xff0c;作为学习DSP的必备软件&#xff0c;掌握简单的Matlab操作是必须的。 目录 第3章 …

[经验] 【安富莱——DSP教程】第7章 DSP定点数和浮点数(重要)

http://bbs.elecfans.com/jishu_486119_1_1.html 7.1 定点数和浮点数概念 如果小数点的位置事先已有约定&#xff0c;不再改变&#xff0c;此类数称为“定点数”。相比之下&#xff0c;如果小数点的位置可变&#xff0c;则称为“浮点数”&#xff08;定点数的本质是小数…

【STM32F407的DSP教程】第21章 DSP矩阵运算-加法,减法和逆矩阵

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第21章 DSP矩阵运算-加法&#xff0c;减法和逆矩阵 本期教程主要讲解矩阵运算中的初始化&#xff0c;加法&#xff0c;逆矩阵和减法。 目录 第21章 DSP矩阵运算-加…

【STM32H7的DSP教程】第17章 DSP功能函数-定点数互转

完整版教程下载地址&#xff1a;http://www.armbbs.cn/forum.php?modviewthread&tid94547 第17章 DSP功能函数-定点数互转 本期教程主要讲解功能函数中的Q7&#xff0c;Q15和Q31分别向其它类型数据转换。 目录 第17章 DSP功能函数-定点数互转 17.1 初学者…