您好,登錄后才能下訂單哦!
這篇文章主要介紹了怎么在Android中將pk8簽名文件轉轉換為pem,億速云小編覺得不錯,現在分享給大家,也給大家做個參考,一起跟隨億速云小編來看看吧!
Android簽名工具
常用的android的簽名工具有:jarsigner 和apksigner。jarsigner使用keystore文件,apksigner使用pk8+x509.pem。
什么是.pem和.pk8文件
.pem
在android對apk簽名的時候,.pem這種文件就是一個X.509的數字證書,里面有用戶的公鑰等信息,是用來解密的。文件格式里面不僅可以存儲數字證書,還能存各種key。
.pk8
以.pk8為擴展名的文件,應該和PKCS #8是對應的,用來保存private key。
keystore文件轉化為pk8+pem
1.將keystore文件轉換為pkcs12格式
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
jarsigner 的用法
jarsigner -verbose -keystore android.keystore -signedjar android_signed.apk android.apk android.keystore
使用這種方式會報錯:找不到 的證書鏈。×× 必須引用包含專用密鑰和相應的公共密鑰證書鏈的有效密鑰庫密鑰條目。
jarsigner -verbose -keystore DT.jks -signedjar signed.apk unsigned.apk "別名"
補充知識:Android 創建自己的pk8, x509.pem并給app簽名
1, 生成key
命令: keytool -genkey -v -keystore app.keystore -alias gundam_wing -keyalg RSA -validity 20000
控制臺輸出:
輸入密鑰庫口令:
再次輸入新口令:
您的名字與姓氏是什么?
[Unknown]: TechStone
您的組織單位名稱是什么?
[Unknown]: Gundam
您的組織名稱是什么?
[Unknown]: Gundam
您所在的城市或區域名稱是什么?
[Unknown]: Shanghai
您所在的省/市/自治區名稱是什么?
[Unknown]: Shanghai
該單位的雙字母國家/地區代碼是什么?
[Unknown]: zh
CN=TechStone, OU=Gundam, O=Gundam, L=Shanghai, ST=Shanghai, C=zh是否正確?
[否]: Y正在為以下對象生成 2,048 位RSA密鑰對和自簽名證書 (SHA256withRSA) (有效期為 20,000 天):
CN=TechStone, OU=Gundam, O=Gundam, L=Shanghai, ST=Shanghai, C=zh
輸入 <gundam_wing> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
[正在存儲app.keystore]
這個命令會生成帶組織/個人信息的key,并存放在app.keystore文件中
2, 轉換key的格式
命令:
keytool -importkeystore -srckeystore app.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
控制臺會提示輸出tmp.p12的密碼以及app.keystore的密碼,輸入正確之后將會生成tmp.p12文件。
3, 將PKCS12格式的key dump為可直接閱讀的文本
命令:
openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem
dump過程中也會提示輸入密碼,正確輸入之后可閱讀的token會存儲在tmp.rsa.pem中
4, 提取
用文本編輯器打開tmp.rsa.pem,將從
-----BEGIN PRIVATE KEY-----
到
-----END PRIVATE KEY-----這一段(包含這兩個tag)的文本復制出來,新建為文件my_private.rsa.pem
將從
-----BEGIN CERTIFICATE-----
到
-----END CERTIFICATE-----
這一段(包含這兩個tag)的文本復制出來,新建為文件my.x509.pem (簽名時用到的公鑰)
5, 轉換,生成pk8格式的私鑰
openssl pkcs8 -topk8 -outform DER -in my_private.rsa.pem -inform PEM -out my_private.pk8 -nocrypt
這個生成的my_private.pk8就是簽名時用到的私鑰
6, 對apk簽名
java -jar signapk.jar my.x509.pem my_private.pk8 my.apk my_signed.apk
以上就是億速云小編為大家收集整理的怎么在Android中將pk8簽名文件轉轉換為pem,如何覺得億速云網站的內容還不錯,歡迎將億速云網站推薦給身邊好友。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。