android证书转pem,Android签名文件转化为pk8和pem的实现
Android签名工具
常用的android的签名工具有:jarsigner 和apksigner。jarsigner使用keystore文件,apksigner使用pk8+x509.pem。
什么是.pem和.pk8文件
.pem
在android对apk签名的时候,.pem这种文件就是一个X.509的数字证书,里面有用户的公钥等信息,是用来解密的。文件格式里面不仅可以存储数字证书,还能存各种key。
.pk8
以.pk8为扩展名的文件,应该和PKCS #8是对应的,用来保存private key。
keystore文件转化为pk8+pem
1.将keystore文件转换为pkcs12格式
keytool -importkeystore -srckeystore my.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
2. 将PKCS12 dump成pem
openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem
tmp.rsa.pem 是文本格式可以直接查看。
打开文本可以看到私钥(PRIVATE KEY )和证书(CERTIFICATE);
复制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建个文件) cert.x509.pem
复制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem
cert.x509.pem 文件即是我们最后需要的证书文件
3.生成pk8格式的私钥
openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
cert.x509.pem private.pk8
即是我们最后需要的文件。
*备注:
-nocrypt 这个参数设定key加密 如果设置了这个参数 下面签名 只要证书+key 不需要密码了 如果加密 应该
openssl pkcs8 -topk8 -outform
DER -in private.rsa.pem -inform PEM -out private.pk8 接下来输入密码*
4.用法
java -jar signapk.jar cert.x509.pem private.pk8 unsigned.apk signed.apk
jarsigner 的用法
jarsigner -verbose -keystore android.keystore -signedjar android_signed.apk android.apk android.keystore
使用这种方式会报错:找不到 的证书链。×× 必须引用包含专用密钥和相应的公共密钥证书链的有效密钥库密钥条目。
jarsigner -verbose -keystore DT.jks -signedjar signed.apk unsigned.apk "别名"
补充知识:Android 创建自己的pk8, x509.pem并给app签名
1, 生成key
命令: keytool -genkey -v -keystore app.keystore -alias gundam_wing -keyalg RSA -validity 20000
控制台输出:
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: TechStone
您的组织单位名称是什么?
[Unknown]: Gundam
您的组织名称是什么?
[Unknown]: Gundam
您所在的城市或区域名称是什么?
[Unknown]: Shanghai
您所在的省/市/自治区名称是什么?
[Unknown]: Shanghai
该单位的双字母国家/地区代码是什么?
[Unknown]: zh
CN=TechStone, OU=Gundam, O=Gundam, L=Shanghai, ST=Shanghai, C=zh是否正确?
[否]: Y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 20,000 天):
CN=TechStone, OU=Gundam, O=Gundam, L=Shanghai, ST=Shanghai, C=zh
输入 的密钥口令
(如果和密钥库口令相同, 按回车):
[正在存储app.keystore]
这个命令会生成带组织/个人信息的key,并存放在app.keystore文件中
2, 转换key的格式
命令:
keytool -importkeystore -srckeystore app.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
控制台会提示输出tmp.p12的密码以及app.keystore的密码,输入正确之后将会生成tmp.p12文件。
3, 将PKCS12格式的key dump为可直接阅读的文本
命令:
openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem
dump过程中也会提示输入密码,正确输入之后可阅读的token会存储在tmp.rsa.pem中
4, 提取
用文本编辑器打开tmp.rsa.pem,将从
-----BEGIN PRIVATE KEY-----
到
-----END PRIVATE KEY-----
这一段(包含这两个tag)的文本复制出来,新建为文件my_private.rsa.pem
将从
-----BEGIN CERTIFICATE-----
到
-----END CERTIFICATE-----
这一段(包含这两个tag)的文本复制出来,新建为文件my.x509.pem (签名时用到的公钥)
5, 转换,生成pk8格式的私钥
openssl pkcs8 -topk8 -outform DER -in my_private.rsa.pem -inform PEM -out my_private.pk8 -nocrypt
这个生成的my_private.pk8就是签名时用到的私钥
6, 对apk签名
java -jar signapk.jar my.x509.pem my_private.pk8 my.apk my_signed.apk
以上这篇Android签名文件转化为pk8和pem的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持w3xue。
android证书转pem,Android签名文件转化为pk8和pem的实现相关推荐
- uni-app Android证书配置
uni-app Android证书配置 uni-app Android证书配置 Android证书创建具体步骤 证书相关资料填写信息参考 uni-app Android证书配置 Android证书创建 ...
- Android应用的签名及签名文件转换
文章目录 生成APK签名文件 使用keytool命令生成.jks 使用 androidd studio 的生成如下 对apk签名的几种方式 用指定的keystore(jks) 对 apk 签名 使用私 ...
- 证书Certificate以及android打包签名
证书: CA(证书信任机构) 也拥有一个证书(内含公钥和私钥).网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书. 如果用户想得到 ...
- 生成android 证书
签名文件keystore一般有两种:jks后缀或者keystore后缀,Android Studio中创建的为jks后缀,keytool创建的为keystore后缀,两种文件均可用于APP打包. 1. ...
- Hbuilder Android证书申请
Hbuilder Android证书申请 1.安装JDK 2.在cmd下,进入到JDK的bin目录,输入: keytool -genkey -alias yourapp -keyalg RSA -va ...
- android 录音原始文件_5分钟短文 | Android证书生成,签名,验证,虽然难,但学一次就够了!...
引言 从Android演进开始,APK签名就已经成为Android的一部分,并且android要求所有Apks都必须先签名,然后才能将其安装在设备上.关于如何生成密钥以及如何签名的文章很多.一个Apk ...
- android+证书存储,Firefox for Android是否使用设备证书存储?
我发现的唯一证据是: – 在这个网站上http://www.jethrocarr.com/2012/01/04/custom-ca-certificates-and-android/ Jethro c ...
- android crt证书,如何在android手机安装数字证书 crt和p12
当点击Wi-Fi Settings, Advanced界面的"安装证书":或者在Settings的Security界面下的CredentialStorage界面点击"安装 ...
- android安装过程图片,Android的数字证书安装过程概述
当你点击Wi-Fi Settings, Advanced界面的"安装证书":或者在Settings的Security界面下的CredentialStorage界面点击"安 ...
- android studio 的debug证书在哪里,Android Studio debug.keystore位置介绍
如果你在网上搜debug.keystore的位置,大部分文章都会告诉你在 C:\Users\XXX\.android 目录下,但我电脑的该目录下确实没有这个文件,放入同事的debug.keystore ...
最新文章
- 2018-2019 ACM-ICPC, Asia Nanjing Regional Contest
- 深度学习100+经典模型TensorFlow与Pytorch代码实现大合集
- Jfinal集成Spring插件
- apc220使用心得
- 注意链栈next指针的指向,与队列不同:
- java常见异常说明汇总
- 介绍一个开源的SIP(VOIP)协议库PJSIP
- SpringMVC 执行流程解析
- Java的四种引用——强软弱虚
- keras提取模型中的某一层_Tensorflow笔记:高级封装——Keras
- 比较好玩的动态添加网页元素
- java怎么反编译_java如何进行反编译
- 超好用的SVN使用教程!!不看血亏!!
- 关于fftshift引发的问题与思考
- Element-UI 图标乱码解决方案
- 基于jsp,javaweb、ssm教务管理系统
- matlab截视频人脸,一种视频图像中人脸图像截取方法与流程
- 常用的配电箱有哪几种?
- JAVA毕业设计花卉网站计算机源码+lw文档+系统+调试部署+数据库
- 互联网日报 | 3月5日 星期五 | 抖音成为2020欧洲杯官方合作伙伴;携程GMV连续三年全球旅企第一;华为发布好望云服务...
热门文章
- 【技术分享】Win10环境php安装seaslog扩展
- CodRED: A Cross-Document Relation Extraction Dataset for Acquiring Knowledge in the Wild
- 企业单位Win 10家庭版如何打开Guest用户,并共享打印机
- vue中使用市区(地区)联动 复制三步完成
- day 82 Vue学习三之vue组件
- Summary: Rendering Pipeline简单总结一下渲染管线流程图
- [英语] 自建专业词典
- 企查查爬虫python实现(一)整体方法
- waterfall model
- Python显示WiFi密码