JAR文件揭密:探索JAR文件格式的强大功能 - 编程入门网
ExtensionClient.jar 的 manifest 的 Class-Path 头中,如下所示:
在这个 manifest 中 Class-Path 头的值是没有指定路径的 ExtensionDemo.jar,表明 ExtensionDemo.jar 与 ExtensionClient JAR 文件处在同一目录中。 JAR 文件中的安全性 JAR 文件可以用 jarsigner 工具或者直接通过 java.security API 签名。一个签名的 JAR 文件与原来的 JAR 文件完全相同,只是更新了它的 manifest,并在 META-INF 目录中 增加了两个文件,一个签名文件和一个签名块文件。 JAR 文件是用一个存储在 Keystore 数据库中的证书签名的。存储在 keystore 中的证书 有密码保护,必须向 jarsigner 工具提供这个密码才能对 JAR 文件签名。 图 1. Keystore 数据库 JAR文件揭密:探索JAR文件格式的强大功能(4)时间:2011-04-16 IBM Pagadala J. SureshJAR 的每一位签名者都由在 JAR 文件的 META-INF 目录中的一个具有 .SF 扩展名的签名 文件表示。这个文件的格式类似于 manifest 文件 -- 一组 RFC-822 头。如下所示,它的组 成包括一个主要部分,它包括了由签名者提供的信息、但是不特别针对任何特定的 JAR 文件 项,还有一系列的单独的项,这些项也必须包含在 menifest 文件中。在验证一个签名的 JAR 时,将签名文件的摘要值与对 JAR 文件中的相应项计算的摘要值进行比较。 清单 1. 签名 JAR 中的 Manifest 和 signature 文件
数字签名 一个数字签名是.SF 签名文件的已签名版本。数字签名文件是二进制文件,并且与 .SF 文件有相同的文件名,但是扩展名不同。根据数字签名的类型 -- RSA、DSA 或者 PGP -- 以 及用于签名 JAR 的证书类型而有不同的扩展名。 Keystore 要签名一个 JAR 文件,必须首先有一个私钥。私钥及其相关的公钥证书存储在名为 keystores 的、有密码保护的数据库中。JDK 包含创建和修改 keystores 的工具。keystore 中的每一个密钥都可以用一个别名标识,它通常是拥有这个密钥的签名者的名字。 所有 keystore 项(密钥和信任的证书项)都是用唯一别名访问的。别名是在用 keytool -genkey 命令生成密钥对(公钥和私钥)并在 keystore 中添加项时指定的。之后的 keytool 命令必须使用同样的别名引用这一项。 例如,要用别名“james”生成一个新的公钥/私钥对并将公钥包装到自签名的证书中,要 使用下述命令:
这个命令序列指定了一个初始密码“jamespass”,后续的命令在访问 keystore “jamesKeyStore”中与别名“james”相关联的私钥时,就需要这个密码。如果 keystore“ jamesKeyStore”不存在,则 keytool 会自动创建它。 JAR文件揭密:探索JAR文件格式的强大功能(5)时间:2011-04-16 IBM Pagadala J. Sureshjarsigner 工具 jarsigner 工具使用 keystore 生 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |