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 -nocryptcert.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签名证书jks转换成signapk使用的分离模式

更多相关文章

  1. Android之Android的数据存储--File
  2. Android(安卓)NDK编译C/C++为so共享对象
  3. Android调用c++
  4. 【Android】用Android(安卓)Studio创建第一个应用的初始化设置
  5. Android(安卓)面试精华题目总结
  6. 关于Android中解析xml文件qName和localName的问题
  7. Android:apk文件结构及打包技巧
  8. Android(安卓)java.io.IOException异常情况整理
  9. Android(安卓)使用 aria2c + 百度网盘助手下载百度云文件

随机推荐

  1. Activity生命周期讲解
  2. [置顶] 谈谈怎么最快学好android
  3. 获取Android自己写好了的apk以及反编译
  4. HTML5,js与Android(安卓)native通信
  5. Android(安卓)框架之创建设备节点文件
  6. Android中的系统栏
  7. Android(安卓)播放Gif 动画
  8. Android切近实战(一)
  9. 基于 MVP 架构使用Android通用开发框架快
  10. #土豆记事#教你开发Android(安卓)App之