使用jarsigner对APK签名

写在文章中之前:网上当前很多关于jarsigner对APK签名的讲法,但是有些讲的很粗糙,有些还在就在抄袭他人的文章,而自己却没有去验证是否正确

一、由于自己在工作中要用到jarsigner对apk进行最后的发布签名,所以自己也去看了一下具体怎么搞,不足之处欢迎读者指出,在此感谢杨立先生的指导。

二、关于jarsigner的具体介绍请查阅:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jarsigner.html

上面的官方文档的介绍,第一手资料,请详细读,也可以参考下文。

三,实例演示:

1、装有jdk,准备签名文件和apk,具体本文在此不做讲叙,当前是在Mac机环境下,windwos或许有所不同。

           2.终端命令:

 jarsigner

-verbose

-sigalg SHA1withRSA 

-digestalg SHA1 

-keypass你的密钥

-storepass你的密钥

-keystore /Users/release.keystore //签名文件为完全路径

/Users/apk/360.apk // APK文件为完全路径(签名后是替换原来的APK)

别名//签名文件的别名 Key alias

实例:jarsigner -verbose -sigalg SHA1withRSA -digestalgSHA1 -keypass你的密钥-storepass你的密钥-keystore /Users/keystore/release.keystore /Users/apk/yg_3.apk hrbb

Mac的终端演示:


签名成功后的apk演示:

    

注意:

1)签名文件,APK文件为完全路径不能有中文,空格,转译字符

2)签名前后的文件路径不能改

3)加密算法请参考官方文档自行选取,但是第一次选择了后后面不要再随意更换加密算法


的jarsigner

标志和验证的Java Archive(JAR)文件。

概要

的jarsigner  [  选项  ]  JAR文件别名

-verify的jarsigner  [ 选项  ] JAR文件  [ 别名... ]

选项

该命令行选项。见 选项

-校验

该  -verify  选项JAR文件名 ​​后采取零个或多个密钥库别名。当  -verify  指定选项时,  的jarsigner  证书使用的命令检查,以验证在JAR文件中的每个签署项匹配的密钥库别名之一。该别名由指定的密钥库定义  -keystore  或默认密钥库。

如果您还指定了  -strict  选项和  的jarsigner  命令检测到严重的警告,显示消息,“罐子核定,并签名错误”。

JAR文件

要签名的JAR文件。

如果您还指定了  -strict  选项和  的jarsigner  命令检测到严重的警告,显示消息,“罐子签字,签名者的错误。”

别号

该别名由指定的密钥库定义  -keystore  或默认密钥库。

描述

该  的jarsigner  工具有两个目的:

  • 签署的Java Archive(JAR)文件。

  • 要验证签名的JAR文件的签名和完整性。

的JAR功能使得类文件,图像,声音,和其他数字数据的中为更快,更容易分配一个单独的文件中的包装。一个工具叫 罐子  使开发人员能够生成JAR文件。(从技术上来说,任何zip文件也可以被认为是一个JAR文件,但是当被创建 的jar  命令或在处理  的jarsigner  命令,JAR文件还包含  META-INF / MANIFEST.MF  文件)。

数字签名是从一些数据计算比特串(被签署的数据)和一个实体的私有密钥(一个人,公司,等等)。类似于手写签名,数字签名有很多有用的特性:

  • 其真实性可通过使用对应于用来生成签名的私有密钥的公共密钥的计算来验证。

  • 它不能被伪造,假定私钥保密。

  • 它是签署的数据的功能,因此不能被声称是为其他数据的签名,以及。

  • 签名的数据不能改变。如果数据被改变,则签名不能被验证为可信。

以产生一个实体的一个文件的签名,该实体必须首先与它和验证其公共密钥的一个或多个证书相关联的公钥/私钥对。证书是从说,其他实体的公钥有特定值一个实体经过数字签名的声明。

该  的jarsigner  命令使用从密钥存储密钥和证书信息生成JAR文件的数字签名。密钥仓库是私钥和认证对应的公钥及其相关的X.509证书链的数据库。该密钥工具  命令用于创建和管理密钥库。

该  的jarsigner  命令使用实体的私钥生成的签名。已签署的JAR文件包含,除其他外,从密钥库对应于用于签署文件的私钥的公钥证书的副本。该  的jarsigner命令可以验证使用它里面的证书签名的JAR文件的数字签名(在其签名块文件)。

该  的jarsigner  命令生成签名,其中包括一个时间戳,让一个系统或部署(包括Java插件)检查,同时签名证书仍然有效JAR文件是否被签名。此外,API允许应用程序以获取时间戳信息。

在这个时候,  的jarsigner  命令只能由签名创建的JAR文件  的jar  命令或zip文件。JAR文件是相同的zip文件,除非他们也有一个  META-INF / MANIFEST.MF  文件。一个  META-INF / MANIFEST.MF  文件被创建时  的jarsigner命令标志的zip文件。

默认  的jarsigner  命令的行为是签名JAR或zip文件。使用  -verify  选项来验证一个签名的JAR文件。

该 的jarsigner  命令还试图签署或验证后验证签名者的证书。如果有一个验证错误或任何其他问题,命令生成警告消息。如果指定 -strict  选项,则该命令把严重警告视为错误。请参见  错误和警告

密钥仓库别名

所有的密钥存储实体与唯一的别名​​访问。

当您使用  的jarsigner  命令签署JAR文件,必须指定包含生成签名所需的私钥的密钥仓库项的别名。例如,下面的命令标志名为JAR文件  myJarFile.jar中  与别名相关联的私钥  公爵  在指定密钥库  的MyStore  在  工作  目录。由于未指定输出文件,它将覆盖  myJarFile.jar中  与签名的JAR文件。

-keystore的jarsigner /工作/的MyStore -storepass <存储密码>
      -keypass <私钥密码>与myJarFile.jar公爵

密钥库密码保护,因此必须指定存储密码。系统提示您输入它时,你没有指定它的命令行上。同样,私钥与密码的密钥存储保护,因此必须指定私钥的密码,并提示您输入密码时,您不指定它的命令行上,这是不一样的存储密码。

密钥仓库位置

该  的jarsigner  命令有一个  -keystore  指定密钥库的URL中使用的选项。密钥库是存储在一个文件名 ​​为默认  的.keystore  在用户的主目录,由确定  的user.home  系统属性。

从输入流 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值