APK簽名及查看簽名信息

APP在安裝前,需要進行簽名,keytool工具可以生成證書,通過生成的證書來進行簽名。

keytool工具在javaJDK中有,在android開發SDK中也有這個工具;

keytool -genkeypair -alias mykey -keyalg RSA -keystore mykey.keystore  -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass 123456 -storepass 123456 -validity 180

翻譯成人話就是:創建一個新的祕鑰,別名是mykey,加密算法是RSA,保存路徑是當前路徑,名字是mykey.keystore,創建此證書的機構是localhost,組織是localhost,組織名稱是localhost,地點是localhost,城市是localhost,國家是localhost,密碼是123456,指定密碼條目,保存密碼時間爲180天

參數說明:

-genkeypair  表示要創建一個新的密鑰

-dname  表示密鑰的Distinguished Names,  表明了密鑰的發行者身份

  CN=commonName      注:生成證書時,CN要和服務器的域名相同,如果在本地測試,則使用localhost

  OU=organizationUnit

  O=organizationName

  L=localityName

  S=stateName

  C=country

-keyalg    使用加密的算法,這裏是RSA

-alias     和keystore關聯的別名,這個alias通常不區分大小寫

-keypass      私有密鑰的密碼,這裏設置爲 123456

-keystore     密鑰保存在D:盤目錄下的mykeystore文件中

-storepass   存取密碼,這裏設置爲changeit,這個密碼提供系統從mykeystore文件中將信息取出

-validity    該密鑰的有效期爲 180天 (默認爲90天)

下面是各選項的缺省值。 

-alias "mykey"

-keyalg "DSA"

-keysize 1024

-validity 90

-keystore 用戶宿主目錄中名爲 .keystore 的文件

-file 讀時爲標準輸入,寫時爲標準輸出 

cacerts證書文件(The cacerts Certificates File)

該證書文件存在於java.home\jre\lib\security目錄下,是Java系統的CA證書倉庫 

直接執行就這樣的:

keytool可以查看證書的信息:

keytool -list -v -keystore mykey.keystore

接着對編譯好的APP進行簽名:

使用工具jarsigner,這個工具和keytool應該在同一個目錄下面,

jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkin] [alias]

jarsigner.exe -verbose -keystore mykey.keystore -signedjar after.apk before.apk mykey

這命令翻譯成人話:對APP進行簽名,簽名的時候輸出簽名的詳細信息,祕鑰證書的位置在哪裏,簽名後的APP存在當前文件夾下after.apk,需要簽名的APP存在當前文件夾下before.apk,祕鑰證書的別名是mykey

命令格式及參數意義:

-verbose  輸出簽名過程的詳細信息

-keystore [keystorePath]   密鑰的庫的位置

-signedjar [apkOut]   簽名後的輸出文件名

apkin  待簽名的文件名

alias 證書別名

開始進行簽名:

簽名完成:

前面後生成after.apk

查看前面信息:

使用keytool工具進行查看APP簽名信息,使用簽名前和簽名後的APP進行一個對比:

keytool -printcert -jarfile app.apk

簽名前的APP:提示不是已簽名jar文件

簽名後的APP:直接輸出了簽名信息:

還有在使用apktool對APP進行反編譯後,APP的文件夾中會有CERT.RSA文件:

使用keytool查看:

keytool.exe -printcert -file CERT.RSA

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