1. 程式人生 > >Android簽名文件轉化為pk8和pem來對apk重簽名

Android簽名文件轉化為pk8和pem來對apk重簽名

cer ava key 用法 重簽名 pen 打開 ckey 就是

當我們需要修改已經打包好的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

Android簽名文件轉化為pk8和pem來對apk重簽名