天天看點

Android簽名制作,keystore檔案轉換格式為pk8+x509.pem

制作簽名的步驟:

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  

Android簽名制作,keystore檔案轉換格式為pk8+x509.pem
Android簽名制作,keystore檔案轉換格式為pk8+x509.pem
  1. keytool   -importkeystore -srckeystore debug.keystore   -destkeystore tmp.p12 -srcstoretype JKS         -deststoretype PKCS12   

第二步  将PKCS12 dump成pem 這樣就可以按照文本形式檢視了

[java]  view plain  copy  

Android簽名制作,keystore檔案轉換格式為pk8+x509.pem
Android簽名制作,keystore檔案轉換格式為pk8+x509.pem
  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 plain  copy  

Android簽名制作,keystore檔案轉換格式為pk8+x509.pem
Android簽名制作,keystore檔案轉換格式為pk8+x509.pem
  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

原文位址:

http://www.android123.com.cn/androidkaifa/173.html 

http://blog.csdn.net/ilittleone/article/details/17914995