加固app
- 加固地址
1 | https://dev.bangcle.com |
签名
1 | jarsigner -verbose -keystore 证书名.keystore -signedjar 签名之后的文件.apk 需要签名的文件.apk 证书名 |
另外需要注意的是,如果你的jdk版本在1.7以上,你在对apk签名时,需要加上这个参数。
1 | -digestalg SHA1 -sigalg MD5withRSA |
1 | 输入密钥库的密码短语: |
查看签名信息
- 查看keystore的信息
1 | keytool -list -keystore demo.keystore -alias mykey -v |
- 查看keystore的公钥证书信息
1 | keytool -list -keystore demo.keystore -alias mykey -rfc |
注:获取Base64格式的公钥证书,RFC 1421)
- 查看apk的签名信息
1 | jarsigner -verify -verbose -certs <your_apk_path.apk> |
介绍
Android签名机制:生成keystore、签名、查看签名信息。Android独有的安全机制,除了权限机制外,另外一个就是签名机制了。签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查。
- 升级App
用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示。
生成keystore
mac可以用keytool命令生成一个私有密钥。在 Windows 上keytool命令放在 JDK 的 bin 目录中(比如C:\Program Files\Java\jdkx.x.x_x\bin),你可能需要在命令行中先进入那个目录才能执行此命令。
1 | keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 |
生成的keystore在用户根目录下
my-release-key -证书名
10000 -有效期为10000天
这条命令会要求你输入密钥库(keystore)和对应密钥的密码,然后设置一些发行相关的信息。最后它会生成一个叫做my-release-key.keystore的密钥库文件。
在运行上面这条语句之后,密钥库里应该已经生成了一个单独的密钥,有效期为 10000 天。–alias 参数后面的别名是你将来为应用签名时所需要用到的,所以记得记录这个别名。
注意:请记得妥善地保管好你的密钥库文件,一般不要上传到版本库或者其它的地方。
1 | $ keytool -genkey -v -alias android -keyalg RSA -validity 20000 -keystore /Users/czq/android.keystore |