【Android】Android签名:pem和pk8转化为keystore,jks

article/2025/10/7 10:39:01

Android签名,pem和pk8转化为jks

  • Android签名证书
  • Android签名JKS
  • JKS签名生成
  • How to use
  • 扩展 jks 转pem/pk8

Android签名证书

  • 前因
  1. 最近更换了硬件设备,硬件厂商给了签名的pem,pk8,最新的版本没有给keystore,虽然现在使用jks了,实在没办法,就自己生成吧
  2. 在AndroidMenifest.xml配置sharedUserId需要系统签名
android:sharedUserId="android.uid.system"
  • 目前获取系统权限的方法
3. platform签名
4. root固件 (有su)
5. 调用厂商封装好的系统权限的sdk
  • 我们对第一点,做下记录,那么会拿到厂商提供的以下两个文件

在这里插入图片描述
platform.pk8 保存private key 加密
platform.x509.pem X.509证书 存储数字证书,公钥信息还能存各种key

  • 但是这两种文件不能直接进行签名,需要调用对App签名
java -jar signapk.jar platform.x509.pem platform.pk8 [old].apk [new].apk
  • 对于这种方式

需要先生成apk,输入命令签名,再使用adb安装
调试 非常不方便,故想将pk8 和pem转成通用的jks或者keystore的签名

Note:
android一般除了使用jarsigner签名,还有使用signapk 后者位于android源码,前者位于jdk中。两者使用的文件格式不同前者使用JKS,后者使用公钥+私钥是分开的


Android签名JKS

  • 准备工作
  1. openssl (需下载安装)
  2. platform.pk8 & platform.x509.pem (厂商提供)
  3. keytool (jdk自带,默认已安装jdk)
  • openssl安装
  1. 下载 openssl

1. 官网,无Windows版本
2. 镜像,有Windows版本
在这里插入图片描述

  • 这里给大家排个坑

首先对应好你的编译APP的JDK版本,如果是JDK8,就下载1.1.1,
如果是高的版本就下载3.0.0,不然你的JDK8keytool识别不了

  1. 配置系统环镜变量
    在这里插入图片描述

JKS签名生成

主要分三步

  1. pk8 私钥解密pem格式
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
  1. 私钥通过公钥pem加密pk12, 需要输入两次密码
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name [别名]
  1. 通过java的keytool 工具生成 keystore, 别名需要跟步骤2的一致,同样输入两次密码

jks

keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass [密码] -alias [别名]

keystore

keytool -importkeystore -destkeystore platform.keystore -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass [密码] -alias [别名]
  • 在这里我遇到了一个小坑

keytool 错误: java.io.IOException: parseAlgParameters failed: ObjectIdentifier() -- data isn't an object ID (tag = 48)

解决方案: 使用jdk16的keytool


How to use

  • 项目使用jks
android {signingConfigs {MySignName {keyAlias "[别名]"keyPassword "[密码]"storeFile file('[jks路径]')storePassword "[密码]"}}buildTypes {debug {signingConfig signingConfigs.MySignName}release{signingConfig signingConfigs.MySignName}}  
}

Example:

signingConfigs {signconfig {keyAlias 'platform'keyPassword 'android'storeFile file('../app/platform.jks')storePassword 'android'}
}buildTypes {debug {signingConfig signingConfigs.signconfigminifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}release {signingConfig signingConfigs.signconfigminifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}
}
  • Bingo,现在Android Studio 调试安装都是platform签名后的apk

扩展 jks 转pem/pk8

主要分五步

  1. java keytool 转成 pkcs12格式
keytool   -importkeystore -srckeystore debug.keystore   -destkeystore tmp.p12 -srcstoretype JKS         -deststoretype PKCS12
  1. pkcs12 dump pem格式
openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem

dump的文件格式

Bag AttributesfriendlyName: [别名]localKeyID: 54 69 6D 65 20 31 35 37 31 38 39 30 30 31 35 30 30 30 
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
....
-----END PRIVATE KEY-----
Bag AttributesfriendlyName: [别名]localKeyID: 54 69 6D 65 20 31 35 37 31 38 39 30 30 31 35 30 30 30 
subject=C = US, ST = California, L = Mountain View, O = Android, OU = Android, CN = Android, emailAddress = android@android.com
issuer=C = US, ST = California, L = Mountain View, O = Android, OU = Android, CN = Android, emailAddress = android@android.com-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
  1. 复制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建个文件) cert.x509.pem

dos命令不好实现,建议采用bash

grep -zoe '-----BEGIN CERTIFICATE-----.*-----END CERTIFICATE-----' tmp.rsa.pem>cert.x509.pem
  1. 复制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem

dos命令不好实现,建议采用bash

grep -zoe '-----BEGIN CERTIFICATE-----.*-----END CERTIFICATE-----' tmp.rsa.pem>private.rsa.pem
  1. 生成pk8格式的私钥
openssl pkcs8 -topk8 -outform DER -in   private.rsa.pem -inform PEM -out private.pk8 -nocrypt
  • 至此已经生成pem pk8 格式的两个签名文件

参考
Android签名证书 keystore jks pem x509
pk8/x509.pem转换为keystore


http://chatgpt.dhexx.cn/article/8KSSX8kx.shtml

相关文章

Android签名文件platform.pk8 和platform.x509.pem转换

在Android开发中&#xff0c;打包apk之后就是给apk进行签名&#xff0c;如果我们只有platform.pk8 和platform.x509.pem文件的话&#xff0c;那么签名就比较麻烦&#xff0c;签名的步骤是这样的&#xff1a; java -jar E:\signapk\signapk.jar -w platform.x509.pem platform.p…

platform.pk8 和platform.x509.pem转jks

/** OpenSSL */ 下载地址&#xff1a;http://slproweb.com/products/Win32OpenSSL.html 安装教程&#xff08;OpenSSL安装教程_香辣奥利奥的博客-CSDN博客&#xff09; 环境配置&#xff1a; openssl 安装后查看是否安装成功&#xff0c;需要以管理员身份运行cmd查看 cmd输入…

.pem和.pk8是什么文件?(转载)

.pem和.pk8是什么文件&#xff1f; 原文地址&#xff1a; http://blog.csdn.net/lewif/article/details/49177653 在给android的apk签名的时候&#xff0c;需要用到一个扩展名为.pem和.pk8的文件&#xff0c;我第一反应&#xff0c;这啥啊&#xff0c;英文缩写&#xff1f;反正…

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

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

【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 添加路径…