html5中文学习网

您的位置: 首页 > android » 正文

Android签名机制介绍:生成keystore、签名、查看签名信息等方法_Android

[ ] 已经帮助:人解决问题

Android独有的安全机制,除了权限机制外,另外一个就是签名机制了。签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查。uubHTML5中文学习网 - HTML5先行者学习网

升级AppuubHTML5中文学习网 - HTML5先行者学习网

用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示。uubHTML5中文学习网 - HTML5先行者学习网

权限检查uubHTML5中文学习网 - HTML5先行者学习网

我曾在Android Permission权限机制的具体使用一文中提过,对于申请权限的  protection level 为 signature 或者 signatureOrSystem 的,会检查权限申请者和权限声明者的证书是否是一致的。uubHTML5中文学习网 - HTML5先行者学习网

至于签名机制的原理及其他作用,此不详述,本文主要介绍,签名文件key的生成、用key去签名apk文件及查看签名的方法。uubHTML5中文学习网 - HTML5先行者学习网

生成keystoreuubHTML5中文学习网 - HTML5先行者学习网

创建keystore,需要用到keytool.exe (位于jdk_xx/jre/bin目录下),具体做法如下:uubHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
uubHTML5中文学习网 - HTML5先行者学习网
keytool -genkey -alias mykey -keyalg RSA -validity 40000 -keystore demo.keystoreuubHTML5中文学习网 - HTML5先行者学习网
#说明:uubHTML5中文学习网 - HTML5先行者学习网
#    -genkey 产生密钥uubHTML5中文学习网 - HTML5先行者学习网
#    -alias mykey 别名 mykeyuubHTML5中文学习网 - HTML5先行者学习网
#    -keyalg RSA 使用RSA算法对签名加密uubHTML5中文学习网 - HTML5先行者学习网
#    -validity 40000 有效期限4000天uubHTML5中文学习网 - HTML5先行者学习网
#    -keystore demo.keystoreuubHTML5中文学习网 - HTML5先行者学习网
uubHTML5中文学习网 - HTML5先行者学习网

对apk进行签名uubHTML5中文学习网 - HTML5先行者学习网

使用产生的keystore对apk签名,使用到的是jarsigner.exe ,该工具位于jdk_xx/bin目录下,命令如下:uubHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
uubHTML5中文学习网 - HTML5先行者学习网
jarsigner -verbose -keystore demo.keystore -signedjar test_signed.apk test.apk mykeyuubHTML5中文学习网 - HTML5先行者学习网
#    test_signed.apk是签名之后的文件uubHTML5中文学习网 - HTML5先行者学习网
#    test.apk是需要签名的文件uubHTML5中文学习网 - HTML5先行者学习网
uubHTML5中文学习网 - HTML5先行者学习网
另外需要注意的是,如果你的jdk版本在1.7以上,你在对apk签名时,需要加上这个参数:uubHTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
uubHTML5中文学习网 - HTML5先行者学习网
-digestalg SHA1 -sigalg MD5withRSAuubHTML5中文学习网 - HTML5先行者学习网
uubHTML5中文学习网 - HTML5先行者学习网
否则同样会出现:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]的错误。uubHTML5中文学习网 - HTML5先行者学习网

查看签名信息uubHTML5中文学习网 - HTML5先行者学习网

1、查看keystore的信息uubHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
uubHTML5中文学习网 - HTML5先行者学习网
keytool -list -keystore demo.keystore -alias mykey -vuubHTML5中文学习网 - HTML5先行者学习网
uubHTML5中文学习网 - HTML5先行者学习网
2、查看keystore的公钥证书信息uubHTML5中文学习网 - HTML5先行者学习网
复制代码 代码如下:
uubHTML5中文学习网 - HTML5先行者学习网
keytool -list -keystore demo.keystore -alias mykey -rfcuubHTML5中文学习网 - HTML5先行者学习网
uubHTML5中文学习网 - HTML5先行者学习网
(注:获取Base64格式的公钥证书,RFC 1421)uubHTML5中文学习网 - HTML5先行者学习网

3、查看apk的签名信息uubHTML5中文学习网 - HTML5先行者学习网

复制代码 代码如下:
uubHTML5中文学习网 - HTML5先行者学习网
jarsigner -verify -verbose -certs <your_apk_path.apk>uubHTML5中文学习网 - HTML5先行者学习网
uubHTML5中文学习网 - HTML5先行者学习网

(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助