国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Android簽名文件轉(zhuǎn)化為pk8和pem的實(shí)現(xiàn)

瀏覽:84日期:2022-09-26 10:21:25

Android簽名工具

常用的android的簽名工具有:jarsigner 和apksigner。jarsigner使用keystore文件,apksigner使用pk8+x509.pem。

什么是.pem和.pk8文件

.pem

在android對(duì)apk簽名的時(shí)候,.pem這種文件就是一個(gè)X.509的數(shù)字證書(shū),里面有用戶(hù)的公鑰等信息,是用來(lái)解密的。文件格式里面不僅可以存儲(chǔ)數(shù)字證書(shū),還能存各種key。

.pk8

以.pk8為擴(kuò)展名的文件,應(yīng)該和PKCS #8是對(duì)應(yīng)的,用來(lái)保存private key。

keystore文件轉(zhuǎn)化為pk8+pem

1.將keystore文件轉(zhuǎn)換為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 是文本格式可以直接查看。

打開(kāi)文本可以看到私鑰(PRIVATE KEY )和證書(shū)(CERTIFICATE);

復(fù)制“BEGIN CERTIFICATE” “END CERTIFICATE” 到(新建個(gè)文件) cert.x509.pem

復(fù)制 “BEGIN RSA PRIVATE KEY” “END RSA PRIVATE KEY” 到(同上) private.rsa.pem

cert.x509.pem 文件即是我們最后需要的證書(shū)文件

3.生成pk8格式的私鑰

openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocryptcert.x509.pem private.pk8

即是我們最后需要的文件。

*備注: -nocrypt 這個(gè)參數(shù)設(shè)定key加密 如果設(shè)置了這個(gè)參數(shù) 下面簽名 只要證書(shū)+key 不需要密碼了 如果加密 應(yīng)該 openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 接下來(lái)輸入密碼*

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

使用這種方式會(huì)報(bào)錯(cuò):找不到 的證書(shū)鏈?!痢?必須引用包含專(zhuān)用密鑰和相應(yīng)的公共密鑰證書(shū)鏈的有效密鑰庫(kù)密鑰條目。

jarsigner -verbose -keystore DT.jks -signedjar signed.apk unsigned.apk '別名'

補(bǔ)充知識(shí):Android 創(chuàng)建自己的pk8, x509.pem并給app簽名

1, 生成key

命令: keytool -genkey -v -keystore app.keystore -alias gundam_wing -keyalg RSA -validity 20000控制臺(tái)輸出:輸入密鑰庫(kù)口令: 再次輸入新口令: 您的名字與姓氏是什么?[Unknown]: TechStone您的組織單位名稱(chēng)是什么?[Unknown]: Gundam您的組織名稱(chēng)是什么?[Unknown]: Gundam您所在的城市或區(qū)域名稱(chēng)是什么?[Unknown]: Shanghai您所在的省/市/自治區(qū)名稱(chēng)是什么?[Unknown]: Shanghai該單位的雙字母國(guó)家/地區(qū)代碼是什么?[Unknown]: zhCN=TechStone, OU=Gundam, O=Gundam, L=Shanghai, ST=Shanghai, C=zh是否正確?[否]: Y

正在為以下對(duì)象生成 2,048 位RSA密鑰對(duì)和自簽名證書(shū) (SHA256withRSA) (有效期為 20,000 天):CN=TechStone, OU=Gundam, O=Gundam, L=Shanghai, ST=Shanghai, C=zh輸入 <gundam_wing> 的密鑰口令(如果和密鑰庫(kù)口令相同, 按回車(chē)): [正在存儲(chǔ)app.keystore]

這個(gè)命令會(huì)生成帶組織/個(gè)人信息的key,并存放在app.keystore文件中

2, 轉(zhuǎn)換key的格式

命令:

keytool -importkeystore -srckeystore app.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12

控制臺(tái)會(huì)提示輸出tmp.p12的密碼以及app.keystore的密碼,輸入正確之后將會(huì)生成tmp.p12文件。

3, 將PKCS12格式的key dump為可直接閱讀的文本

命令:

openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem

dump過(guò)程中也會(huì)提示輸入密碼,正確輸入之后可閱讀的token會(huì)存儲(chǔ)在tmp.rsa.pem中

4, 提取

用文本編輯器打開(kāi)tmp.rsa.pem,將從-----BEGIN PRIVATE KEY-----到-----END PRIVATE KEY-----

這一段(包含這兩個(gè)tag)的文本復(fù)制出來(lái),新建為文件my_private.rsa.pem

將從-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----

這一段(包含這兩個(gè)tag)的文本復(fù)制出來(lái),新建為文件my.x509.pem (簽名時(shí)用到的公鑰)

5, 轉(zhuǎn)換,生成pk8格式的私鑰

openssl pkcs8 -topk8 -outform DER -in my_private.rsa.pem -inform PEM -out my_private.pk8 -nocrypt

這個(gè)生成的my_private.pk8就是簽名時(shí)用到的私鑰

6, 對(duì)apk簽名

java -jar signapk.jar my.x509.pem my_private.pk8 my.apk my_signed.apk

以上這篇Android簽名文件轉(zhuǎn)化為pk8和pem的實(shí)現(xiàn)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 临湘市| 霍州市| 贵溪市| 呼图壁县| 读书| 高要市| 兖州市| 湖南省| 兴义市| 孟连| 长海县| 阳江市| 青州市| 大新县| 神农架林区| 南木林县| 建水县| 桂平市| 张家川| 中山市| 九台市| 隆回县| 浮山县| 鲁山县| 通化市| 汝城县| 佛山市| 汉源县| 汽车| 通道| 天镇县| 松江区| 隆回县| 确山县| 福建省| 呼和浩特市| 恩施市| 新竹县| 辰溪县| 四平市| 亚东县|