Android/Ophone應用程序數字簽名

前兩天搞了個應用到MM上去,結果與測試通不過,原因是“應用程序證書有效期不足1年”,結果才發現,上傳的應用程序忘記簽名了。
爲Android/Ophone應用程序簽名步驟:

1.確保電腦上安裝了JDK,因爲我們將使用JDK自帶的創建和管理數字證書的工具Keytool。在命令行下輸入如下命令:

keytool -genkey -v -keystore ophone.keystore -alias ophone -keyalg RSA -validity 20000

該命令中,-keystore ophone.keystore 表示生成的證書,可以加上路徑(默認在用戶主目錄下);-alias ophone 表示證書的別名是ophone;-keyalg RSA 表示採用的RSA算法;-validity 20000表示證書的有效期是20000天。回車
========================================
輸入keystore密碼:[密碼不顯示]
再次輸入新密碼:[密碼不顯示]
您的名字與姓氏是什麼?   
[Unknown]:   yang
您的組織單位名稱是什麼?   
[Unknown]:   yarin
您的組織名稱是什麼?   
[Unknown]:   yarin
您的組織名稱是什麼?   
[Unknown]:   yarin
您所在的城市或區域名稱是什麼?   
[Unknown]:   Chengdu 
您所在的州或省份名稱是什麼?   
[Unknown]:   Sichuan
該單位的兩字母國家代碼是什麼?  
[Unknown]:   CN CN=yarin, OU=yang, O=yarin, L=Chengdu, ST=Sichuan, C=CN 
正確嗎?   
[否]:   Y 
輸入<ophonesdn.keystore>的主密碼         
(如果和 keystore 密碼相同,按回車):

正在存儲證書...
完成
========================================
此時,我們會在互用主目錄下看到ophone.keystore,即我們剛剛創建的證書。
2.給應用程序(apk)簽名,在EC中,右鍵單擊應用程序工程,如圖選擇


如果是Android則選擇“Android Tools”......
然後選擇證書的存放路徑,填寫相關資料,完成,即可生成被簽名的apk文件。如下圖所示:


如上圖所示,我們可以看到也可以在這裏選擇”Create new keystore“來創建一個證書。輸入密碼,點擊下一步,填寫相關信息,如下圖所示。


需要注意,這裏的證書有效期只能填寫1-1000天。圖形界面,還更簡單了。呵呵...
順便找了點keytool的資料。
附:

JDK中keytool常用命令
-genkey      在用戶主目錄中創建一個默認文件".keystore",還會產生一個別名,證書中包含用戶的公鑰、私鑰和證書
-alias           產生別名
-keystore    指定密鑰庫的名稱(產生的各類信息將不在.keystore文件中)
-keyalg       指定密鑰的算法   
-validity      指定創建的證書有效期多少天
-keysize     指定密鑰長度
-storepass   指定密鑰庫的密碼
-keypass     指定別名條目的密碼
-dname       指定證書擁有者信息 例如:  "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list        顯示密鑰庫中的證書信息      keytool -list -v -keystore sage -storepass ....
-v           顯示密鑰庫中的證書詳細信息
-export      將別名指定的證書導出到文件  keytool -export -alias caroot -file caroot.crt
-file        參數指定導出到文件的文件名
-delete      刪除密鑰庫中某條目          keytool -delete -alias sage -keystore sage
-keypasswd   修改密鑰庫中指定條目口令    keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
-import      將已簽名數字證書導入密鑰庫  keytool -import -alias sage -keystore sagely -file sagely.crt
             導入已簽名數字證書用keytool -list -v 以後可以明顯發現多了認證鏈長度,並且把整個CA鏈全部打印出來。

1.證書的顯示
-list
[-v | -rfc] [-alias <alias>]
[-keystore <keystore>] [-storepass <storepass>]
[-storetype <storetype>] [-provider <provider_class_name>]
例如:keytool -list -v -alias RapaServer -keystore cacerts -storepass 12345678
keytool -list -v -keystore d2aapplet.keystore -storepass 12345678 -storetype IAIKKeystore
2.將證書導出到證書文件
例如:keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer
將把證書庫 monitor.keystore 中的別名爲 monitor 的證書導出到 monitor.cer 證書文件中,它包含證書主體的信息及證書的公鑰,不包括私鑰,可以公開。
keytool -export -keystore d2aApplet.keystore -alias RapaServer -file Rapa.cert -storetype IAIKKeystore
3.將keystore導入證書中
這裏向Java默認的證書 cacerts導入Rapa.cert
keytool -import -alias RapaServer -keystore cacerts -file Rapa.cert -keystore cacerts
4.證書條目的刪除
keytool的命令行參數 -delete 可以刪除密鑰庫中的條目,如: keytool -delete -alias RapaServer -keystore d2aApplet.keystore ,這條命令將 d2aApplet.keystore 中的 RapaServer 這一條證書刪除了。
5.證書條目口令的修改
使用 -keypasswd 參數,如:keytool -keypasswd -alias RapaServer -keystore d2aApplet.keystore,可以以交互的方式修改 d2aApplet.keystore證書庫中的條目爲 RapaServer 的證書。
Keytool -keypasswd -alias RapaServer -keypass 654321 -new 123456 -storepass 888888 -keystore d2aApplet.keystore這一行命令以非交互式的方式修改庫中別名爲 RapaServer 的證書的密碼爲新密碼 654321,行中的 123456 是指該條證書的原密碼, 888888 是指證書庫的密碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章