本文主要介绍了Android签名文件转换为pk8和pem的实现,具有很好的参考价值。希望对大家有帮助。来和边肖一起看看吧。
Android签名工具
常用的android签名工具有:jarsigner和apksigner。Jarsigner使用keystore文件,apksigner使用pk8x509.pem。
什么是.pem和.pk8文件
.pem
安卓签apk的时候,文件。pem是一种X.509数字证书,包含用户公钥等信息,用于解密。文件格式不仅可以存储数字证书,还可以存储各种密钥。
.pk8
扩展名为. pk8的文件应对应于PKCS #8,并用于保存私钥。
keystore文件转化为pk8+pem
1.将keystore文件转换为pkcs12格式
keytool-import keystore-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是一种可以直接查看的文本格式。
打开文本查看私钥和证书;
将“开始证书”和“结束证书”复制到(创建新文件)cert.x509.pem
将“开始RSA私钥”和“结束RSA私钥”复制到(同上)private.rsa.pem
cert.x509.pem文件是我们需要的最后一个证书文件。
3.生成pk8格式的私钥
OpenSSL pkcs 8-top k8-out form DER-in private . RSA . PEM-inform PEM-out private . pk8-nocrypt
cert.x509.pem private.pk8
那是我们需要的最后一份文件。
*备注:
-nocrypt此参数设置密钥加密。如果设置了此参数,只要证书密钥不需要密码,就需要以下签名。如果加密应该
openssl pkcs8 -topk8 -outform
接下来,输入密码*
4.用法
Java-jar signapk . jar cert . x509 . PEM private . pk8 unsigned . apk signed . apk
jarsigner的用法
jarsigner-verbose-keystore Android . keystore-signed jar Android _ signed . apk Android . apk Android . keystore
使用此方法将报告一个错误:找不到证书链。必须引用包含私钥和相应公钥证书链的有效密钥库密钥条目。
jarsigner-verbose-keystore dt . jks-signed jar signed . apk unsigned . apk '别名'
补充知识:Android 创建自己的pk8, x509.pem并给app签名
1, 生成key
命令:keytool-genkey-v-keystore app . keystore-alias gundam _ wing-keyalg RSA-validity 20000
控制台输出:
输入密钥库密码:
再次输入新密码:
你的名和姓是什么?
[未知]:科技石
您的组织单位名称是什么?
[未知]:高达
你的组织名称是什么?
[未知]:高达
你所在的城市或地区的名称是什么?
【未知】:上海
你的省份叫什么?
【未知】:上海
这个单位的两个字母的国家代码是什么?
【未知】:zh
cn=techstone,ou=高达,o=高达,l=上海,ST=上海,c=zh是否正确?
[否]: Y
正在为以下对象生成2,048位RSA密钥对和自签名证书(SHA256withRSA)(有效期为20,000天):
CN=TechStone,OU=高达,O=高达,L=上海,ST=上海,C=zh
输入高达_wing的密钥密码。
(如果它与密钥库密码相同,请按Enter键):
[保存app.keystore]
该命令将生成一个包含组织/个人信息的密钥,并将其存储在app.keystore文件中。
2, 转换key的格式
命令:
keytool-import keystore-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
在转储过程中也会提示输入密码,正确输入后,可读令牌将存储在tmp.rsa.pem中。
4, 提取
用文本编辑器打开tmp.rsa.pem,并从
-开始私钥-
到达
-结束私钥-
复制此段落的文本(包括这两个标记)并创建一个新文件my_private.rsa.pem
威尔(男子名)
-开始证书-
到达
-结束证书-
复制这一段的文本(包括这两个标签)并创建一个新文件my.x509.pem(签名时使用的公钥)。
5, 转换,生成pk8格式的私钥
OpenSSL pkcs 8-top k8-out form 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的实现就是边肖分享的全部内容。希望给大家一个参考,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。