Android签名证书 keystore jks pem x509

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 Attributes
        friendlyName: [别名]
        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 Attributes
        friendlyName: [别名]
        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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
APK签名文件keystore制作生成工具是用于创建和管理数字证书、私钥和公钥,以便对Android应用程序进行签名的工具。在Android开发过程中,每个APK文件都必须经过数字签名才能在设备上安装和运行。Keystore工具就是为了生成这些数字签名所需的密钥和证书。 要使用APK签名文件keystore制作生成工具,首先需要安装Java开发工具包(JDK)和Android开发工具包(SDK)。然后使用keytool工具来创建一个keystore文件,该文件包含了应用程序的数字证书和私钥。在创建keystore文件时,需要提供一些基本的信息,如密钥别名、密码等。 创建keystore文件后,就可以使用它来对APK文件进行签名。在Android开发工具包中,有一个名为jarsigner的工具,可以使用keystore文件来对APK文件进行数字签名签名后的APK文件将被认为是由合法的开发者发布的,可以在设备上安装和运行。 除了用于开发过程中的APK签名外,在发布应用程序时,还需要将keystore文件妥善保管,因为它是对应用程序的身份认证凭证。如果丢失了keystore文件,将无法更新或发布与原应用程序相同包名的应用,也可能导致已发布的应用无法更新或验证。 总之,APK签名文件keystore制作生成工具是Android开发过程中必不可少的工具,它用于生成数字证书和私钥,对APK文件进行签名,以及管理应用程序的发布凭证。通过使用该工具,开发者可以确保他们的应用程序是安全可靠的,并且可以在用户设备上正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值