使用Auto-Sign签名工具时,看到pem跟pk8俩文件
国有化改革。。
senrsl@senrsl-desktop:~$ cd java/jdk1.7.0_51/
senrsl@senrsl-desktop:~/java/jdk1.7.0_51$ ll
总用量 19776
drwxr-xr-x 8 senrsl senrsl 4096 12月 19 11:25 ./
drwxrwxr-x 3 senrsl senrsl 4096 3月 13 15:26 ../
drwxr-xr-x 2 senrsl senrsl 4096 12月 19 11:19 bin/
-r--r--r-- 1 senrsl senrsl 3339 12月 19 11:11 COPYRIGHT
drwxr-xr-x 4 senrsl senrsl 4096 12月 19 11:11 db/
drwxr-xr-x 3 senrsl senrsl 4096 12月 19 11:11 include/
drwxr-xr-x 5 senrsl senrsl 4096 12月 19 11:13 jre/
drwxr-xr-x 5 senrsl senrsl 4096 12月 19 11:24 lib/
-r--r--r-- 1 senrsl senrsl 40 12月 19 11:11 LICENSE
drwxr-xr-x 4 senrsl senrsl 4096 12月 19 05:11 man/
-r--r--r-- 1 senrsl senrsl 114 12月 19 11:11 README.html
-rw-r--r-- 1 senrsl senrsl 498 12月 19 11:12 release
-rw-r--r-- 1 senrsl senrsl 19895587 12月 19 11:11 src.zip
-rw-r--r-- 1 senrsl senrsl 123324 12月 19 05:11 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r-- 1 senrsl senrsl 173559 12月 19 11:11 THIRDPARTYLICENSEREADME.txt
senrsl@senrsl-desktop:~/java/jdk1.7.0_51$ cd bin
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ ll
总用量 720
drwxr-xr-x 2 senrsl senrsl 4096 12月 19 11:19 ./
drwxr-xr-x 8 senrsl senrsl 4096 12月 19 11:25 ../
-rwxr-xr-x 1 senrsl senrsl 5953 12月 19 11:12 appletviewer*
-rwxr-xr-x 1 senrsl senrsl 5865 12月 19 11:12 apt*
lrwxrwxrwx 1 senrsl senrsl 8 12月 19 11:13 ControlPanel -> jcontrol*
-rwxr-xr-x 1 senrsl senrsl 5873 12月 19 11:12 extcheck*
-rwxr-xr-x 1 senrsl senrsl 5893 12月 19 11:12 idlj*
-rwxr-xr-x 1 senrsl senrsl 5861 12月 19 11:12 jar*
-rwxr-xr-x 1 senrsl senrsl 5873 12月 19 11:12 jarsigner*
-rwxr-xr-x 1 senrsl senrsl 5714 12月 19 11:12 java*
-rwxr-xr-x 1 senrsl senrsl 5865 12月 19 11:12 javac*
-rwxr-xr-x 1 senrsl senrsl 5873 12月 19 11:12 javadoc*
-rwxr-xr-x 1 senrsl senrsl 2052 12月 19 05:11 javafxpackager*
-rwxr-xr-x 1 senrsl senrsl 5865 12月 19 11:12 javah*
-rwxr-xr-x 1 senrsl senrsl 5865 12月 19 11:12 javap*
-rwxr-xr-x 1 senrsl senrsl 1809 12月 19 11:03 java-rmi.cgi*
-rwxr-xr-x 1 senrsl senrsl 104202 12月 19 11:13 javaws*
-rwxr-xr-x 1 senrsl senrsl 5861 12月 19 11:12 jcmd*
-rwxr-xr-x 1 senrsl senrsl 5929 12月 19 11:12 jconsole*
-rwxr-xr-x 1 senrsl senrsl 6391 12月 19 11:13 jcontrol*
-rwxr-xr-x 1 senrsl senrsl 5897 12月 19 11:12 jdb*
-rwxr-xr-x 1 senrsl senrsl 5865 12月 19 11:12 jhat*
-rwxr-xr-x 1 senrsl senrsl 5985 12月 19 11:12 jinfo*
-rwxr-xr-x 1 senrsl senrsl 5985 12月 19 11:12 jmap*
-rwxr-xr-x 1 senrsl senrsl 63050 7月 6 2013 jmc*
-rw-r--r-- 1 senrsl senrsl 324 7月 6 2013 jmc.ini
-rwxr-xr-x 1 senrsl senrsl 5857 12月 19 11:12 jps*
-rwxr-xr-x 1 senrsl senrsl 5881 12月 19 11:12 jrunscript*
-rwxr-xr-x 1 senrsl senrsl 5901 12月 19 11:12 jsadebugd*
-rwxr-xr-x 1 senrsl senrsl 5993 12月 19 11:12 jstack*
-rwxr-xr-x 1 senrsl senrsl 5861 12月 19 11:12 jstat*
-rwxr-xr-x 1 senrsl senrsl 5869 12月 19 11:12 jstatd*
-rwxr-xr-x 1 senrsl senrsl 5362 1月 17 2013 jvisualvm*
-rwxr-xr-x 1 senrsl senrsl 5873 12月 19 11:12 keytool*
-rwxr-xr-x 1 senrsl senrsl 5877 12月 19 11:12 native2ascii*
-rwxr-xr-x 1 senrsl senrsl 6013 12月 19 11:12 orbd*
-rwxr-xr-x 1 senrsl senrsl 5893 12月 19 11:12 pack200*
-rwxr-xr-x 1 senrsl senrsl 5981 12月 19 11:12 policytool*
-rwxr-xr-x 1 senrsl senrsl 5857 12月 19 11:12 rmic*
-rwxr-xr-x 1 senrsl senrsl 5865 12月 19 11:12 rmid*
-rwxr-xr-x 1 senrsl senrsl 5877 12月 19 11:12 rmiregistry*
-rwxr-xr-x 1 senrsl senrsl 5889 12月 19 11:12 schemagen*
-rwxr-xr-x 1 senrsl senrsl 5873 12月 19 11:12 serialver*
-rwxr-xr-x 1 senrsl senrsl 5893 12月 19 11:12 servertool*
-rwxr-xr-x 1 senrsl senrsl 6045 12月 19 11:12 tnameserv*
-rwxr-xr-x 1 senrsl senrsl 215415 12月 19 11:12 unpack200*
-rwxr-xr-x 1 senrsl senrsl 5873 12月 19 11:12 wsgen*
-rwxr-xr-x 1 senrsl senrsl 5881 12月 19 11:12 wsimport*
-rwxr-xr-x 1 senrsl senrsl 5877 12月 19 11:12 xjc*
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ keytool -importkeystore -srckeystore DeApp.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
程序 'keytool' 已包含在下列软件包中:
* gcj-4.6-jre-headless
* openjdk-6-jre-headless
* gcj-4.5-jre-headless
* openjdk-7-jre-headless
请尝试:sudo apt-get install <选定的软件包>
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ ./keytool -importkeystore -srckeystore DeApp.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
输入目标密钥库口令:
再次输入新口令:
keytool 错误: java.io.FileNotFoundException: DeApp.keystore (没有那个文件或目录)
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ ./keytool -importkeystore -srckeystore DeApp.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
输入目标密钥库口令:
再次输入新口令:
输入源密钥库口令:
已成功导入别名 伪信 的条目。
已成功导入别名 网易新闻2b版 的条目。
已完成导入命令: 2 个条目成功导入, 0 个条目失败或取消
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ openssl help
openssl:Error: 'help' is an invalid command.
Standard commands
asn1parse ca ciphers cms
crl crl2pkcs7 dgst dh
dhparam dsa dsaparam ec
ecparam enc engine errstr
gendh gendsa genpkey genrsa
nseq ocsp passwd pkcs12
pkcs7 pkcs8 pkey pkeyparam
pkeyutl prime rand req
rsa rsautl s_client s_server
s_time sess_id smime speed
spkac srp ts verify
version x509
Message Digest commands (see the `dgst' command for more details)
md4 md5 rmd160 sha
sha1
Cipher commands (see the `enc' command for more details)
aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256-cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des-ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx rc2
rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb
rc2-ecb rc2-ofb rc4 rc4-40
seed seed-cbc seed-cfb seed-ecb
seed-ofb zlib
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem
Enter Import Password:
MAC verified OK
//这个是不加密钥的方法
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
//这个是加密钥
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$ openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8
Enter Encryption Password:
Verifying - Enter Encryption Password:
senrsl@senrsl-desktop:~/java/jdk1.7.0_51/bin$
原贴:
地址:http://blog.csdn.net/ilittleone/article/details/17914995
android 一般除了使用jarsigner签名 还有使用signapk 后者位于android源码 前者位于jdk中。两者使用的文件格式不同前者使用JKS 后者使用公钥+私钥 是分开的
第一步 先v把keystore文件转换为pkcs12格式
第二步 将PKCS12 dump成pem 这样就可以按照文本形式查看了
- keytool -importkeystore -srckeystore debug.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
接下来打开文件intermediate.rsa.pem 看到 PRIVATE KEY 还有CERT PS:private 那边可能有RSA KEY 这个不用管
- openssl pkcs12 -in tmp.p12 -nodes -out tmp.rsa.pem
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格式的私钥
完毕 收集文件 cert.x509.pem private.pk8 其余的中间文件删除即可
- openssl pkcs8 -topk8 -outform DER -in private.rsa.pem -inform PEM -out private.pk8 -nocrypt
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
OK
--
senRsl
2014-03-25 11:12
GMT+8 @Beijing Tongzhou
senRsl
2014-03-25 11:12
GMT+8 @Beijing Tongzhou
没有评论 :
发表评论