Android簽名

Android獨有的安全機制,除了權限機制外,另外一個就是簽名機制了。簽名機制主要用在以下兩個主要場合起到其作用:升級App和權限檢查。

1.升級App
用戶在升級一款已經安裝過的App時,如果程序的修改來自於同一來源,則允許升級安裝,否則會提示簽名不一致無法安裝的提示。
2.權限檢查
彎柚博客的一篇文章Android Permission權限機制的具體使用提過,對於申請權限的 protection level 爲 signature 或者 signatureOrSystem 的,會檢查權限申請者和權限聲明者的證書是否是一致的。
至於簽名機制的原理及其他作用,此不詳述,本文主要介紹,簽名文件key的生成、用key去簽名apk文件及查看簽名的方法。
3.生成keystore
創建keystore,需要用到keytool.exe (位於jdk_xx\jre\bin目錄下),具體做法如下:

keytool -genkey -alias mykey -keyalg RSA -validity 40000 -keystore demo.keystore

說明:

    -genkey 產生密鑰
    -alias mykey 別名 mykey
    -keyalg RSA 使用RSA算法對簽名加密
    -validity 40000 有效期限4000    -keystore demo.keystore

keytool.exe的位置:
這裏寫圖片描述

用法示例:需要先打開命令行窗口。
這裏寫圖片描述
最後生成的keystore文件可以在jdk_xx\jre\bin目錄下,這裏的目錄是C:\Program Files\Java\jre7\bin
如圖:
這裏寫圖片描述

4.apk簽名

4.1使用愛加密提供的APKSign.exe可視化簽名工具進行加密
使用方法如下:需要準備好apk文件和上面的keystore文件。

這裏寫圖片描述

這裏寫圖片描述

4.2使用ADT插件方式進行簽名
如果讀者想在Eclipse中直接對apk文件進行簽名,可以使用ADT插件附帶的功能。在工程右鍵菜單中單擊【Android Tools】>【Export Signed Application Package…】菜單項,打開【Export Android Application】對話框,並在第一頁輸入要導出的工程名,如圖2.9所示。
進入下一個設置頁後,輸入密鑰文件的路徑(【Location】文本框)和密碼,如圖2.10所示。在接下來的兩個設置界面中分別輸入簽名信息和要生成的apk文件名,如圖2.11和圖2.12所示。

這裏寫圖片描述
圖4.2.1 指定要導出的工程

這裏寫圖片描述
圖4.2.2 指定密鑰文件的路徑和密碼

這裏寫圖片描述
圖4.2.3 輸入簽名信息

這裏寫圖片描述
圖4.2.4 輸入要生成的apk文件名

在進行完上面的設置後,單擊【Finish】按鈕生成被簽名的apk文件。查看生成的文件後會發現,除了生成ch02_showdatetime.apk文件外,還生成了一個private_keys文件。該文件就是密鑰文件。下次再簽名時可以直接選擇該文件。

在對apk文件簽完名後,可以直接將apk文件複製給要使用軟件的用戶或發佈到Android Market以及中國移動的Mobile Market上。要注意的是,Android Market不允許上傳未簽名的apk文件,因此,必須對apk文件進行簽名才能上傳到Android Market上。

4.3使用jarsigner.exe進行簽名
使用產生的keystore對apk簽名,使用到的是jarsigner.exe,該工具位於jdk_xx\bin目錄下,命令如下:

jarsigner -verbose -keystore demo.keystore -signedjar test_signed.apk test.apk mykey

說明:


>     test_signed.apk是簽名之後的文件
>     test.apk是需要簽名的文件

另外需要注意的是,如果你的jdk版本在1.7以上,你在對apk簽名時,需要加上這個參數:

-digestalg SHA1 -sigalg MD5withRSA

否則同樣會出現:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的錯誤。

查看簽名信息
1)查看keystore的信息

keytool -list -keystore demo.keystore -alias mykey -v

2)查看keystore的公鑰證書信息

keytool -list -keystore demo.keystore -alias mykey -rfc

(注:獲取Base64格式的公鑰證書,RFC 1421)
3)查看apk的簽名信息

jarsigner -verify -verbose -certs

發佈了29 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章