博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android初级篇之apk签名key keystore格式转pk8+x509.pem
阅读量:5964 次
发布时间:2019-06-19

本文共 1656 字,大约阅读时间需要 5 分钟。

转自:

常用的android的签名工具有两个即jarsigner 和apksigner。这两种使用的key格式不一样,keystore格式转pk8+x509.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 是文本格式可以直接查看

打开文本:

Bag Attributes    friendlyName: dtcamera    localKeyID: 54 69 6D 65 20 31 34 35 38 38 31 37 33 31 30 37 30 36 Key Attributes: 
-----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- Bag Attributes friendlyName: dtcamera localKeyID: 54 69 6D 65 20 31 34 35 38 38 31 37 33 31 30 37 30 36 subject=/CN=DTC issuer=/CN=DTC -----BEGIN CERTIFICATE----- -----END CERTIFICATE-----

打开文本可以看到私钥(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 "别名"

具体可参考 参考链接1

感谢橘小兔-一米阳光的文章,参考链接2,帮我解决了这个问题,亲测可行。

参考链接

 

转载于:https://www.cnblogs.com/dirt2/p/6231977.html

你可能感兴趣的文章
校验表单如何摆脱 if else ?
查看>>
<气场>读书笔记
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
3D地图的定时高亮和点击事件(基于echarts)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
从前后端分离到GraphQL,携程如何用Node实现?\n
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>
我的友情链接
查看>>
批量删除用户--Shell脚本
查看>>
Eclipse Java @Override 报错
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>