zoukankan      html  css  js  c++  java
  • Android签名文件转化为pk8和pem来对apk重签名

         当我们需要修改已经打包好的apk中的某个文件时,比如改下图标,我们势必要采用反编译apk,改文件,重编译apk,重签名才行,参考:https://www.cnblogs.com/zndxall/p/9628475.html

        但是如果我们不需要改apk里的东西呢,只是想重新签名一下,比如我们会有这样的场景需要验证,apk只能是我们自己的签名才能安装,如果其他人换用其他签名就会安装失败并报错签名不可用。这个时候我们只需要重新签名apk就可以了,如果还是采用反编译,删META-INF,重编译,再签名,一个apk,我们可以忍受,多个apk呢,就有点吃力了。这个时候,我们可以采用另一种方式签名:就是把key转化成pk8和pem文件,然后一条命令就可以完成重签名了

    过程如下:

    1.keystore文件转化为pk8+pem

    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

  • 相关阅读:
    Java基础知识 String StringBuffer StringBuilder三者的区别(面试题)
    周学习笔记(10)——大三下
    中国软件杯——基于计算机视觉的交通场景智能应用
    unable to find Qt5Core.dll on PATH(已解决,超简单)
    周学习笔记(09)——大三下
    《一线架构师实践指南》阅读笔记三
    周学习笔记(08)——大三下
    《一线架构师实践指南》阅读笔记二
    周学习笔记(07)——大三下
    《一线架构师实践指南》阅读笔记一
  • 原文地址:https://www.cnblogs.com/zndxall/p/9857767.html
Copyright © 2011-2022 走看看