生产商业系统的开发者会购买证书来签名他们的JAR,一般的开发者则可以用匿名证书来签名他们的JAR。
为JAR签名需要两个工具:你要用keytool来创建一个密匙,然后用JARSigner来用此密匙为JAR签名。可以用同一个密匙来为一个公司或一个开发者的所有JAR签名
为什么JAR要被签名?当用户启动一个Java Network Launching Protocol (JNLP,Java网络加载协议)文件或使用一个applet时,这个JNLP或applet请求系统提供超过一般的访问。例如,它可能有一个“文件|打开”菜单项用来装载一个.csv文件。进行这样的请求,就需要签名的JAR。如果它是匿名的,系统会询问用户是否打算信任JAR的签署者。
下面是一个使用keytool的例子。在实际应用中,请确保你用了可靠的的keypass和keystore的密码。后面为JAR签名的时候你会需要它们。
> keytool -genkey -alias csv -keypass invasion:earth
输入keystore密码: harry:Harrison
您的名字与姓氏是什么?
[Unknown]: bayard
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]: generationjava.com
您所在的城市或区域名称是什么?
[Unknown]: Springfield
您所在的州或省份名称是什么?
[Unknown]:
该单位的两字母国家代码是什么
[Unknown]: US
<CN=bayard, OU=Unknown, O=generationjava.com, L=Springfield, ST=Unknown, C=US>正确吗?
[否]: 是
成这一步骤后,keytool将在你的用户目录下产生一个名为.keystore的二进制文件。运行keytool -list将会列出在keystore中的条目。
>keytool -list
输入keystore密码: harry:Harrison
Keystore 类型: jks
Keystore 提供者: SUN
您的keystore 包含 1 输入
csv, Tue Feb 05 22:49:44 EST 2002, keyEntry,
认证指纹(MD5): E8:FC:38:E3:59:72:0A:86:7F:57:C0:D3:4C:8E:25:FC
(译者注:原文为英文,此处为译者在中文环境下运行同一命令得到的控制台输出)
获得这个密匙后,你只需要提供它的别名来用它为JAR签名,这个别名是用keytool产生的。这一步用JARsigner工具来完成:
> JARsigner-verbose Csv.JAR csv
Enter Passphrase for keystore: harry:Harrison
Enter key password for csv: invasion:earth
updating: META-INF/MANIFEST.MF
adding: META-INF/CSV.SF
adding: META-INF/CSV.DSA
signing: com/generationjava/lang/NumberW.class
signing: com/generationjava/io/Csv.class
...略...还有许多类...
这一步添加了两个文件到你的JAR中:META-INF/CSV.SF和META-INF/CSV.DSA。DSA文件包含一个二进制的密匙,而SF文件则包含了JAR中所有类的一个列表,和每个文件的SHA-1摘要,所以可以验证它们的真实性。
现在你的JAR已经被签名了。运行JARsigner -verbose -verify Csv.JAR可以确定这个JAR已经被成功签名,现在你可以更好地控制你的JNLP或applet的安全模型。
转载自奉天承运 [ http://richards.blog.zj.com/ ]
分享到:
相关推荐
标题“JAR数字签名格式解析示例”揭示了本文将深入探讨Java Archive (JAR) 文件的数字签名机制。在Java环境中,JAR文件用于打包类文件和其他资源,而数字签名是确保JAR文件完整性和来源可靠性的关键安全措施。它允许...
### 如果给jar包制作数字签名 #### 知识点概览 - **数字签名的意义**:数字签名在软件开发中尤为重要,尤其是对于那些需要访问客户端本地资源的应用(如Applet或Java Web Start程序)。通过数字签名,开发者可以...
在互联网上发布JAR文件,特别是作为Applet时,为了确保代码安全性和用户信任,需要对它们进行数字签名。本工具——"jar 包自动数字签名工具",专门设计来简化这一过程。 数字签名是一种用于验证文件完整性和来源的...
签名过程包括对JAR中的每个文件进行哈希计算,然后将这些哈希值与发布者的数字签名一起存储在JAR的元数据中。这样,当JAR被加载时,Java运行环境会检查这个签名,以确认文件未被篡改,并验证发布者的身份。 JAR包...
3.用私钥给jar包签名 工具支持的密钥库形式: 1.PKCS12 2.JKS 查看证书库内容: 分为私钥别名和证书别名 生成证书的同时会生成三个文件: 1.私钥文件(pem) 2.证书文件(pem) 3.密钥库文件--jks或者p12(pfx)后者IE可用 ...
在IT行业中,数字签名和Java Archive (JAR) 包是两个重要的概念,尤其是在软件开发和发布阶段。这里,我们有一个测试工程,专门用于生成数字签名和JAR包,这通常是为了确保软件的安全性和完整性。这个工程使用了Ant...
代码签名是一种验证软件来源可靠性的方法,它通过数字签名技术为JAR文件提供了一种认证机制。在Java中,我们可以使用Java自带的工具如`jarsigner`来完成这个过程。代码签名的主要步骤包括生成密钥对(公钥和私钥)、...
描述 "jar包签名工具,需要的朋友知道是什么东西,特别好用,不要错过" 暗示这是一个专为开发者设计的工具,用于对JAR文件进行数字签名。签名过程可以验证软件的发布者身份,确保代码未经修改,并允许Java运行时环境...
pdf电子签章所需要的jar包,电子签章与数字证书一样是身份验证的一种手段,泛指所有以电子形式存在,依附在电子文件并与其逻辑关联,可用以辨识电子文件签署者身份,保证文件的完整性,并表示签署者同意电子文件所...
### 数字签名的Java实现 #### 一、引言 随着互联网的发展,数据安全变得尤为重要。数字签名技术作为保障信息安全的重要手段之一,在电子商务、电子政务等领域有着广泛的应用。本文主要探讨了基于Java语言的数字...
JAR签名是一个将数字签名嵌入到JAR文件中的过程。它提供了一种机制,使得用户或者Java虚拟机(JVM)可以在运行时检查JAR文件的完整性和来源。如果JAR文件被修改,签名将不再有效,从而防止恶意代码的注入。 2. **...
标题中的"Sign.jar"就是一个经过签名处理的Java可执行文件,它包含了开发者的信息以及对程序代码的数字签名。这样的签名能确保用户下载和安装的应用程序没有被篡改,并且来自可信的开发者。 首先,我们要理解什么是...
Java 数字签名是一种用于验证数据完整性和发送者身份的安全机制,它是基于公钥加密技术的。在 Java 平台上,我们可以使用内置的 Keytool 和 Jarsigner 工具来实现数字签名的操作。以下是对这个主题的详细讲解: 一...
JAR包签名的过程涉及到使用数字证书来验证发布者的身份和确保代码的完整性。这可以通过Java的`jarsigner`工具完成。签名的主要步骤包括: 1. **创建Keystore**:开发者首先需要一个密钥库(keystore),其中包含私钥...
首先,`jarsigner`是Java SDK中的一个命令行工具,用于对`.jar`文件进行数字签名。签名的过程包括以下步骤: 1. **生成密钥对**:开发者通常会使用Keytool工具生成一对密钥,包括一个私钥(用于签名)和一个公钥...
### iReport + JasperReport 客户端打印与数字签名详解 #### 一、概述 iReport 是一个用于设计 JasperReports 报告模板的图形界面工具,而 JasperReports 则是一款非常流行的 Java 报告工具,它能够从各种数据源...
实现数字签名通常需要JDK自带的`jre/lib/security`目录下的`jsse.jar`和`jce.jar`,它们包含了加密和SSL/TLS相关的类库。如果在某些环境下这些jar包未被自动引入,需要手动添加到项目的类路径中。 5. **安全性考虑...
在Java中,JAR文件签名是一种安全特性,它允许开发者对代码进行数字签名,以证明代码的来源并确认其未被篡改。这个过程涉及到公钥加密技术,通过私钥对JAR文件的每个条目进行签名,然后将签名信息包含在JAR文件的...