为 Java 归档 (JAR) 文件产生签名,并校验已签名的 JAR 文件的签名。
结构
jarsigner [ options ] jar-file alias
jarsigner -verify [ options ] jar-file
说明
jarsigner 工具用于两个目的:
1.为 Java 归档 (JAR) 文件签名
2.校验已签名的 JAR 文件的签名和完整性
JAR 功能使得类文件、图像、声音和其它数字化数据可打包到单个文件中,以便更方便快捷地发布。名为 jar 的工具使开发者可以生成 JAR 文件(从技术上来说,任何 zip 文件都可看作为 JAR 文件,尽管由 jar 创建或由 jarsigner 处理时,JAR 文件还包含 META-INF/MANIFEST.MF 文件)。
数字签名是从一个实体(人、公司等)的某些数据(正被“签名”的数据)和私钥计算出来的位串。与手写的签名一样,数字签名有很多有用的特性:
1.其真实性可被校验,方法是使用与生成签名的私钥对应的公钥进行计算。
2.它不可能被伪造(假设私钥没有泄露)。
3.它是已签名数据的函数,因此不能被声明为其它数据的签名。
4.已签名的数据不能被修改;如果被修改了,签名将不再被校验为可信的。
为了给文件生成实体的签名,该实体首先必须与一对公/私钥相关联,以及一个或多个鉴别其公钥的证书。证书是来自一个实体的已被数字签署的声明,表示某个其它实体的公钥有特定值。
jarsigner 使用来自密钥仓库的密钥和证书信息为 JAR 文件生成数字签名。密钥仓库是私钥及其相关的 X.509 证书链(它鉴别相应公钥)的数据库。使用 keytool 实用程序来创建和管理密钥仓库。
jarsigner 使用实体的私钥创建签名。已签名的 JAR 文件包含(和其它东西一起)一份来自密钥仓库的公钥(它对应于用于为该文件签名的私钥)的证书副本。jarsigner 可以使用已签名的 JAR 文件中的(在其签名块文件中)证书来校验其数字签名。
现在 jarsigner 只能为由 JDK 的 jar 工具创建的 JAR 文件或 zip 文件签名(除了 JAR 文件还有一个 META-INF/MANIFEST.MF 文件以外,JAR 文件与 zip 文件一样。当 jarsigner 为 zip 文件签名时将自动创建这样的文件)。
jarsigner 的缺省行为是签名 JAR (或 zip)文件。使用 -verify 选项将其转换为校验已签名的 JAR 文件。
密钥仓库别名
所有密钥仓库实体都须通过唯一的别名来访问。
当使用 jarsigner 签名 JAR 文件时,必须为包含用于生成签名的私钥的密钥仓库实体指定别名。
例如,下面命令将使用与别名“duke”相关联的私钥为名为 “MyJarFile.jar”的 JAR 文件签名,该私钥存储在 C 驱动器的“working”目录下名为“mystore”的密钥仓库中)。因为没有指定输出文件,它将用签名后的 JAR 文件覆盖 MyJarFile.jar。
jarsigner -keystore C:\working\mystore -storepass myspass -keypass dukekeypasswd MyJarFile.jar duke
密钥仓库被口令保护,因此必须指定仓库口令(此处为“myspass”)。如果在命令行中没有指定,系统将给出提示。同样,密钥仓库中的私钥也被口令保护,因此必须指定私钥的口令(此处为 “dukekeypasswd”)。如果没有在命令行中指定,系统将给出提示。此口令与密钥仓库口令可能不同。
转自:http://hi.baidu.com/xidianliuy/blog/item/e067b6fb8786a9274e4aea57.html