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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM