文档章节

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

Reone的开发笔记
 Reone的开发笔记
发布于 2016/07/05 15:20
字数 547
阅读 122
收藏 2

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Android独有的安全机制,除了权限机制外,另外一个就是签名机制了。签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查。

升级App

用户在升级一款已经安装过的App时,如果程序的修改来自于同一来源,则允许升级安装,否则会提示签名不一致无法安装的提示。

权限检查

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

至于签名机制的原理及其他作用,此不详述,本文主要介绍,签名文件key的生成、用key去签名apk文件及查看签名的方法。

生成keystore

创建keystore,需要用到keytool.exe (位于jdk_xx\jre\bin目录下),具体做法如下:


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_xx\bin目录下,命令如下:

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

(注:获取Base64格式的公钥证书,RFC 1421)

3、查看apk的签名信息

jarsigner -verify -verbose -certs <your_apk_path.apk>

 

本文转载自:http://www.jb51.net/article/63602.htm

Reone的开发笔记
粉丝 6
博文 70
码字总数 29350
作品 0
松江
程序员
私信 提问
Android签名机制:生成keystore、签名、查看签名信息

Android独有的安全机制,除了权限机制外,另外一个就是签名机制了。签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查。 升级App 用户在升级一款已经安装过的App时,如果程序的...

爪哇小贩
2015/07/24
1K
0
Android应用apk的调试模式签名和发布模式签名

一般从项目的bin目录下拷贝的apk是调试模式签名,在发布时往往不被通过,例如在联想开发社区会报错"校验签名信息异常,不允许android debug签名apx包"。 《Android签名详解》全文摘录如下,红...

天高空
2012/05/04
1K
0
Java/Android的keytool查看Android keystore的md5值

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/82969949 Java/Android的keytool查看Android keystore的md5值 Android发布正式的版本出...

zhangphil
2018/10/08
0
0
Android安全开发之通用签名风险

Android安全开发之通用签名风险 作者:伊樵、舟海、呆狐@阿里聚安全 1 通用签名风险简介 1.1 Android应用签名机制 阿里聚安全漏洞扫描器有一项检测服务是检测APP的通用签名风险。Android系统...

阿里聚安全
2016/08/08
339
0
android数字签名

Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有...

迷途d书童
2012/03/26
4.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么面试必问线程状态?你的回答满分了吗

看很多同学的面经、网上的面试资料,都不约而同的提到了一个基础问题:“你知道线程有几种状态吗?状态之间的扭转是怎样的?”,有准备的同学都知道有五种:New(新建)、Runnable(可运行)...

Z_J_H
30分钟前
4
0
如何保障云上数据安全?一文详解云原生全链路加密

点击下载《不一样的 双11 技术:阿里巴巴经济体云原生实践》 本文节选自《不一样的 双11 技术:阿里巴巴经济体云原生实践》一书,点击上方图片即可下载! 作者 李鹏(壮怀)阿里云容器服务高...

阿里巴巴云原生
30分钟前
4
0
获取数组的第一个元素

我有一个数组: array( 4 => 'apple', 7 => 'orange', 13 => 'plum' ) 我想获得此数组的第一个元素。 apple 预期结果: apple 一个要求: 它不能通过引用传递来完成 ,所以array_shift不是一......

javail
32分钟前
5
0
哈希情史知多少

<p align="right">——日拱一卒,不期而至!</p> 简介 hash是我们工作中经常听到的词,比如哈希表、哈希函数、hashCode、HashTable、HashMap等等,那么它们之间到底有怎样的爱恨情仇呢?来一...

彤哥读源码
39分钟前
4
0
SpringCloud 学习(5) --- Zuul(一)基本概念、配置

[TOC] Spring Cloud eureka:注册中心 服务端:提供注册 客户端:进行注册 ribbon:负载均衡(集群) Hystrix:熔断器,执行备选方案 Feign:远程调用 Zuul:网关,统一入口。 1.1、一夫当关,...

庭前云落
41分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部