制作簽名的步驟:
C:/Program Files/Java/jdk1.6.0_10/bin>keytool -genkey -alias android123.keystore
-keyalg RSA -validity 20000 -keystore android123.keystore
輸入keystore密碼:[密碼不回顯]
再次輸入新密碼:[密碼不回顯]
您的名字與姓氏是什麼?
[Unknown]: android123
您的組織機關名稱是什麼?
[Unknown]: www.android123.com.cn
您的組織名稱是什麼?
[Unknown]: www.android123.com.cn
您的組織名稱是什麼?
[Unknown]: www.android123.com.cn
您所在的城市或區域名稱是什麼?
[Unknown]: New York
您所在的州或省份名稱是什麼?
[Unknown]: New York
該機關的兩字母國家代碼是什麼
[Unknown]: CN
CN=android123, OU=www.android123.com.cn, O=www.android123.com.cn, L=New York, ST
=New York, C=CN 正确嗎?
[否]: Y
輸入<android123.keystore>的主密碼[img][/img]
(如果和 keystore 密碼相同,按回車):
其中參數-validity為證書有效天數,這裡我們寫的大些20000天。還有在輸入密碼時沒有回顯,隻管輸入就可以了,一般位數建議使用20位,最後需要記下來後面還要用
接下來我們開始為apk檔案簽名了。
keystore檔案轉換格式為pk8+x509.pem
Android 一般除了使用jarsigner簽名 還有使用signapk 後者位于android源碼 前者位于jdk中。兩者使用的檔案格式不同前者使用JKS 後者使用公鑰+私鑰 是分開的
第一步 先v把keystore檔案轉換為pkcs12格式
[java] view plain copy
- keytool -importkeystore -srckeystore debug.keystore -destkeystore tmp.p12 -srcstoretype JKS -deststoretype PKCS12
第二步 将PKCS12 dump成pem 這樣就可以按照文本形式檢視了
[java] view plain copy
- 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 plain copy
- 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
原文位址:
http://www.android123.com.cn/androidkaifa/173.html
http://blog.csdn.net/ilittleone/article/details/17914995