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天
-dname 表示密鑰的Distinguished Names, 表明了密鑰的發行者身份
CN=commonName 注:生成證書時,CN要和服務器的域名相同,如果在本地測試,則使用localhost
-alias 和keystore關聯的別名,這個alias通常不區分大小寫
-keystore 密鑰保存在D:盤目錄下的mykeystore文件中
-storepass 存取密碼,這裏設置爲changeit,這個密碼提供系統從mykeystore文件中將信息取出
-validity 該密鑰的有效期爲 180天 (默認爲90天)
-keystore 用戶宿主目錄中名爲 .keystore 的文件
cacerts證書文件(The cacerts Certificates File)
該證書文件存在於java.home\jre\lib\security目錄下,是Java系統的CA證書倉庫
keytool -list -v -keystore mykey.keystore
使用工具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
-keystore [keystorePath] 密鑰的庫的位置
使用keytool工具進行查看APP簽名信息,使用簽名前和簽名後的APP進行一個對比:
keytool -printcert -jarfile app.apk
還有在使用apktool對APP進行反編譯後,APP的文件夾中會有CERT.RSA文件: