Android簽名機制介紹:產生keystore、簽名、查看簽名資訊等方法_Android

來源:互聯網
上載者:User

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

升級App

使用者在升級一款已經安裝過的App時,如果程式的修改來自於同一來源,則允許升級安裝,否則會提示簽名不一致無法安裝的提示。

許可權檢查

我曾在Android Permission許可權機制的具體使用一文中提過,對於申請許可權的  protection level 為 signature 或者 signatureOrSystem 的,會檢查許可權申請者和許可權聲明者的認證是否是一致的。

至於簽名機制的原理及其他作用,此不詳述,本文主要介紹,簽名檔案key的產生、用key去簽名apk檔案及查看簽名的方法。

產生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

對apk進行簽名

使用產生的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 <your_apk_path.apk>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.