keystore文件转换格式为pk8+x509.pem以及反转

来源:互联网 发布:如何清理mac磁盘空间 编辑:程序博客网 时间:2024/05/22 02:03

android 一般除了使用jarsigner签名 还有使用signapk 后者位于android源码 前者位于jdk中。两者使用的文件格式不同前者使用JKS 后者使用公钥+私钥 是分开的


第一步 先v把keystore文件转换为pkcs12格式

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. keytool   -importkeystore -srckeystore debug.keystore   -destkeystore tmp.p12 -srcstoretype JKS         -deststoretype PKCS12   
第二步 将PKCS12 dump成pem 这样就可以按照文本形式查看了
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. openssl        pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem  


  接下来打开文件intermediate.rsa.pem 看到 PRIVATE KEY 还有CERT PS:private 那边可能有RSA KEY 这个不用管
Bag Attributes
    friendlyName: androiddebugkey
    localKeyID: 54 69 6D 65 20 31 33 38 38 39 37 38 34 32 36 38 36 39 
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
Bag Attributes
    friendlyName: androiddebugkey
    localKeyID: 54 69 6D 65 20 31 33 38 38 39 37 38 34 32 36 38 36 39 
subject=/C=US/O=Android/CN=Android Debug
issuer=/C=US/O=Android/CN=Android Debug
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
复制“BEGIN CERTIFICATE”  “END CERTIFICATE” 到(新建个文件) cert.x509.pem
[
 pem里面内容(下的一样):
-----BEGIN CERTIFICATE-----
。。。。
-----END CERTIFICATE-----
]
复制 “BEGIN RSA PRIVATE KEY”   “END RSA PRIVATE KEY” 到(同上) private.rsa.pem

第三 生成pk8格式的私钥
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. openssl pkcs8 -topk8 -outform DER -in     private.rsa.pem -inform PEM -out private.pk8 -nocrypt  


 完毕 收集文件 cert.x509.pem private.pk8 其余的中间文件删除即可
PS:

-nocrypt 这个参数设定key加密 如果设置了这个参数 下面签名 只要证书+key 不需要密码了 如果加密 应该openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 接下来输入密码

用法 java -jar signapk.jar cert.x509.pem private.pk8 unsigned.apk signed.apk





将Linux下的A

将L Android 签名对pk8和pem转换为Eclipse下的签名(keystore)

一 在github上下载工具
https://github.com/getfatday/keytool-importkeypair
二 将工具在Linux环境下解压或者解压后Copy到Linux下,运行如下命令
keytool-importkeypair -k ~/android/debug.keystore -p android -pk8 ~/android/platform.pk8 -cert ~/android/platform.x509.pem -alias anyname

其中 -k:表示要生成的Eclipse下的签名的keystore的名字,包括路径名,这里存到主目录的android目录下,名字为debug.keystore。你可以随便取名
-p 表示新生成的keystore的密码是什么,这里为android
-pk8 表示要导入的pk8文件的名称,可以包括路径,这里是主目录的Android目录下,我们的pk8文件和pem文件都在这个目录下
-cert 表示要导入的证书文件,和pk8文件在同一个目录
-alias 表示给生成的debug.keystore取一个别名,这个名字只有我们在签名的时候才用的到,生成在文件名是debug.keystore。这个名字,随便取

0 0
原创粉丝点击