Android签名证书

背景

因业务需求,经常与系统厂商打交道,大多需要厂商开放root权限

目前获取系统权限的总结有三种方式(均有实际应用)

  1. platform签名
  2. root固件 (有su)
  3. 调用厂商封装好的系统权限的sdk

后两者调试比较简单,不多做介绍. 针对第一点,厂商会提供两个文件

​ platform.pk8 保存private key 加密

​ platform.x509.pem X.509证书 存储数字证书,公钥信息还能存各种key

但是这两种文件不能直接进行签名,需要调用

java -jar signapk.jar platform.x509.pem platform.pk8 old.apk [new].apk

Android Studio 生成apk,还需额外执行以上步骤,调试非常不方便,故想将pk8 和pem 转成通用的jks或者keystore的签名

Note:

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

signapk.jar 不是系统自带,需要额外下载

环境配置

下载 openssl

选择合适的文件下载安装,完成后配置环境变量

pem/pk8 转换jks/keystore

keystore,jks本身是一个东西,没有区别;在eclipse上生成的是.keystore后缀,在andorid studio上生成的是.jks后缀;

主要分三步

  1. pk8 私钥解密pem格式

    openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
    
  2. 私钥通过公钥pem加密pk12

    openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name [别名]
    

    需要输入两次密码

  3. 通过java的keytool 工具生成 keystore

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

    别名需要跟步骤2的一致,同样输入两次密码

windows 下合并后如下

openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out platform.priv.pem -nocrypt
openssl pkcs12 -export -in platform.x509.pem -inkey platform.priv.pem -out platform.pk12 -name [别名]
keytool -importkeystore -destkeystore platform.jks -srckeystore platform.pk12 -srcstoretype PKCS12 -srcstorepass [密码] -alias [别名]
pause

Android Studio 项目使用jks

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

现在Android Studio 调试安装都是platform签名

扩展 jks 转pem/pk8

主要分五步

  1. java keytool 转成 pkcs12格式

    keytool   -importkeystore -srckeystore debug.keystore   -destkeystore tmp.p12 -srcstoretype JKS         -deststoretype PKCS12
    
  2. 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-----
    
  3. 复制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建个文件) cert.x509.pem

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

    grep -zoe '-----BEGIN CERTIFICATE-----.*-----END CERTIFICATE-----' tmp.rsa.pem>cert.x509.pem
    
  4. 复制 “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
    
  5. 生成pk8格式的私钥

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

    至此已经生成pem pk8 格式的两个签名文件

参考

.pem和.pk8是什么文件?

签名证书keystore,jks,pk8,x509.pem

keystore文件转换格式为pk8+x509.pem

Android签名证书 keystore jks pem x509相关推荐

  1. 签名证书keystore,jks,pk8,x509.pem

    .keystore,.jks本身是一个东西,没有区别:在eclipse上生成的是.keystore后缀,在andorid studio上生成的是.jks后缀: 生成.keystore http://w ...

  2. 安卓APP证书Android签名证书.keystore文件制作生成

    将app发布到应用宝时,而上传安装包时提示如下图时, 但您或您的团队从未上传该应用,您可以通过认领功能认领应用.认领成功后该应用会自动转入您的账户下,同时保留应用全部数据,您可以在应用管理中进行管理. ...

  3. android签名忘记密码,修改Android签名证书keystore的密码、别名alias以及别名密码

    之前在测试Eclipse ADT的Custom debug Eclipse ADT的Custom debug keystore所需证书规格,提到过自定义调试证书的密码和 1. 首先当然是先复制一份正式 ...

  4. 我的Android进阶之旅------修改Android签名证书keystore的密码、别名alias以及别名密码...

    转载于:http://blog.k-res.net/archives/1229.html  和 http://blog.k-res.net/archives/1671.html ADT允许自定义调试用 ...

  5. Android 签名证书生成及jks与keystore 相互转换

    Android 签名证书生成及jks与keystore 相互转换 keytool 这个工具是JDK里面自带的,配置好JDK环境可直接在命令行完成一下操作! 生成签名证书: 生成JKS证书: keyto ...

  6. Android平台签名证书(.keystore)生成指南

    来源:https://ask.dcloud.net.cn/article/35777 Android平台签名证书(.keystore)生成指南 分类:HTML5+ Android证书 Android平 ...

  7. 「移动端」Android平台签名证书(.keystore)生成指南

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站.→传送门 本文主要介绍Android平台签名证书(.keystore)生成指南 Android平台打包 ...

  8. Android平台签名证书(.keystore)生成指南及高德地图配置

    利用keytool 工具,生成Android平台签名证书(.keystore)生成指南 生成签名证书 使用keytool -genkey命令生成证书: keytool -genkey -alias t ...

  9. Android签名证书

    在最新的Android SDK中我们看到了Android签名证书机制的出现,也就是说几乎和Symbian OS v9.x以上平台构架一样,都需要数字签名证书才可以运行,这也是考虑到平台的安全性,同样也 ...

最新文章

  1. CSS3 Media Queries:移动 Web 的完美开端
  2. 学号 20175223 《Java程序设计》第4周学习总结
  3. Redis 初探-安装与使用
  4. 如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?
  5. 飞特商城后台管理系统是接私活利器,企业级快速开发框架 商城后台 取之开源,用之开源
  6. gradle学习(19)-log系统
  7. 票据的生命周期与人的灵魂
  8. python函数式编程:apply, map, lambda和偏函数
  9. 文件搜索工具Listary中文版快速上手使用教程
  10. java中常用的设计模式(*)
  11. 人工智能在反洗钱领域的应用探索
  12. html 设置origin,background-origin属性怎么用
  13. 新疆计算机一级考试excel公式,2020年XX专业技术人员继续教育公需课《Excel快速统计》试题及答案...
  14. 经历 成长——致逝去的时光
  15. Container Station搭建个人网盘Nextcloud(Mariadb)
  16. Pytorch 学习率衰减 之 余弦退火与余弦warmup 自定义学习率衰减scheduler
  17. 创建采购订单BADI流程
  18. 视频正在os x使用中_如何在OS X中使用家长控制来保护孩子
  19. day01血字的研究
  20. STM32F103代码远程升级(三)基于YModem协议串口升级程序的实现

热门文章

  1. Robotic toolbox10.2的fkine函数与机械臂MDH和DH变化矩阵的应用
  2. python日出日落时间实现和详解
  3. 金融数据分析:股票日收益率5日均值【python】
  4. 【阿笨狗】U盘、闪盘独门使用、保养经验大放送,有USB移动存储设备的进来看看
  5. 4、JSP基础、javabean、
  6. AI_CC_2017不能新建文件
  7. 啥是数据思维能力?(一)辩证思维·关联思维·结构思维
  8. 蓝叠5模拟器无法打开摄像头,怎么解决
  9. 全局变量的替代方法,并在较长的调用链中传递相同的值
  10. gdal库中设置prj4库全路径的用法