為了讓clipse產生的APK有system權限,必須sign platform Keystore
Prerequisite
- Software
- keytool
- openssl
- Key
- File Path: build/target/product/security
- Private Key: platform.pk8
- Public Key: platform.x509.pem
Steps
http://en.wikipedia.org/wiki/PKCS
java的keystore(jks)算是pkcs12的部分,但由於jks是sun的proprietary的format,所以openssl沒法處理jks 要先把他轉成pkcs12再用keytool來轉
首先要先把 private key (pkcs8) 從DER format轉成PEM format
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
然後要把private key 跟public key 轉成pkcs12
openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pkcs12
最後用keytool把他(pkcs12)轉成jks (platform.jks)
keytool -importkeystore -srckeystore platform.pkcs12 -srcstoretype pkcs12 -srcstorepass android -destkeystore platform.jks -deststoretype jks -deststorepass PASSWORD
注意的是默认 產生的alias是1 還不知道怎麼改alias就是了.......
openssl pkcs8 -inform DER -nocrypt -in platform.pk8 -out platform.pem
openssl pkcs12 -export -in platform.x509.pem -inkey platform.pem -out platform.pkcs12
keytool -importkeystore -srckeystore platform.pkcs12 -srcstoretype pkcs12 -srcstorepass android -destkeystore platform.jks -deststoretype jks -deststorepass PASSWORD
keytool -list -keystore platform.jks -storetype jks -storepass PASSWORD
Keystore type: JKS
Keystore provider: SUN
Your keystore contains 1 entry
1, Jan 18, 2011, PrivateKeyEntry,
Certificate fingerprint (MD5): 8D:DB:34:2F:2D:A5:40:84:02:D7:56:8A:F2:1E:29:F9
在build.properties 加上
key.store=platform.jks
key.alias=1
最後 ant release 再打上PASSWORD就好了
2011.06.13
===== java keystore to certificate + private =========
keytool -export -alias 1 -keystore platform.jks -file exported-der.crt
openssl x509 -in exported-der.crt -inform der > platform.x509.pem
就變回原來的x509 certificate
至於private key
目前查到的結果都是keytool沒辦法export private key
都要另外下載個ExportedPriv.java來作export的動作
Reference :
http://conshell.net/wiki/index.php/OpenSSL_to_Keytool_Conversion_tips
http://conshell.net/wiki/index.php/Keytool_to_OpenSSL_Conversion_tips
http://www.herongyang.com/crypto/Key_Formats_PKCS8_PKCS12_4.html
POSTED BY ALLSTARS.CHH AT 4:10 PM
LABELS: ANDROID
There's also a shell script available to do this in linux:
https://github.com/getfatday/keytool-importkeypair
https://github.com/getfatday/keytool-importkeypair
将工具在Linux环境下解压或者解压后Copy到Linux下,运行如下命令
其中 -k:表示要生成的Eclipse下的签名的keystore的名字,包括路径名,这里存到主目录的android目录下,名字为debug.keystore。你可以随便取名
-p 表示新生成的keystore的密码是什么,这里为android
-pk8 表示要导入的pk8文件的名称,可以包括路径,这里是主目录的Android目录下,我们的pk8文件和pem文件都在这个目录下
-cert 表示要导入的证书文件,和pk8文件在同一个目录
-alias 表示给生成的debug.keystore取一个别名,这个名字只有我们在签名的时候才用的到,生成在文件名是debug.keystore。这个名字,随便取
http://allstarschh.blogspot.jp/2009/08/blog-post.html
http://hongwei-huang-blog.logdown.com/posts/587300