Android署名メカニズム:keystoreの生成、署名、署名情報の表示

1629 ワード

Android独自のセキュリティメカニズムは、権限メカニズムのほかに署名メカニズムです.署名メカニズムは主に、Appのアップグレードと権限チェックの2つの主要な場面で使用されます.
Appのアップグレード
ユーザーは、すでにインストールされているAppをアップグレードするときに、プログラムの変更が同じソースから来ている場合は、アップグレードインストールを許可します.そうしないと、署名が一致してインストールできないプロンプトが表示されます.
アクセス権チェック
Android Permission権限メカニズムの具体的な使用について述べたことがありますが、申請権限のprotection levelがsignatureまたはsignatureOrSystemの場合、権限申請者と権限声明者の証明書が一致しているかどうかをチェックします.
署名メカニズムの原理とその他の役割については、詳しくは説明しません.本稿では、署名ファイルkeyの生成、keyでapkファイルに署名し、署名を表示する方法について説明します.
keystoreの生成
keystoreを作成するにはkeytoolが必要です.exe(jdk_xxjrebinディレクトリの下にあります)の具体的な方法は次のとおりです.
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_にあるツールxxbinディレクトリで、コマンドは次のとおりです.
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

(注:Base 64形式の公開鍵証明書、RFC 1421を取得)
3、apkの署名情報を表示する
jarsigner -verify -verbose -certs <your_apk_path.apk>