数字签名的制作方法整理
sign.cmd
call set.cmd
call selfsign.cmd %1
batchsign.cmd
call set.cmd
for %%N in (%1\*.jar) do call selfsign.cmd %%N
使用说明:
1. 在md中设置JDK_BIN文件夹位置和存放Key的文件夹位置
Keystore提供者:SUN
您的keystore包含1输入
yourProj, 2009-5-15, keyEntry,
认证指纹(MD5):D4:9D:C7:3A:91:B4:30:6A:4D:50:F1:7C:E7:F5:B9:49
说明已经生成成功完成!
3.开始为Jar包文件签名
用JARsigner工具
-keypass 指定别名条目的密码(私钥的密码)
-dname 指定证书拥有者信息 例如: "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"
-list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
%JDK_BIN%\keytool -export -keystore %KEY_FOLDER%\cuckoo.keystore -alias cuckoo -file %KEY_FOLDER%\cuckoo.cer <KEY_PWD.lst
注:KEY_ANSWER.lst和KEY_PWD.lst为输入重定向文件,从文本文件里读每行来回答命令行的问题,换行回车作为提交。-validity后面跟签名有效期,以天为单位,默认是半年
该单位的两字母国家代码是什么
[Unknown]:CN
CN=ChinayourCompany, OU=, O=Company, L=City, ST=Province, C=CN正确
吗?
[否]:Y
2.为此密钥加有效期限:7200天,将近20年. [嘿嘿,足够用了吧?再也别想6个月]
1。用keytool来创建一个密匙(同时指定时效,多久会过期,默认只给6个月)
2。用JARSigner用此密匙为JAR签名。
可以用同一个密匙来为多个JAR签名。
注意:大小写,签名一致,数字签名过期
为什么JAR要被签名?当用户启动一个Java Network Launching Protocol (JNLP,Java网络加载协议)文件或使用一个applet时,这个JNLP或applet可能请求系统提供一些非一般的访问。比如“文件打开”等进行这样的请求,就需要签名的JAR。
屏幕提示:
输入密钥库的口令短语:yourCompany:yourPassword
输入yourProj的密钥口令:yourCompany:Kouling
正在添加:META-INF/YOURPROJ.SF
正在添加:META-INF/YOURPROJ.DSA
正在添加:org/
注意:重要签名给yourCompany-app-v1.0.1.jar文件,但它使用了另外的几个commonsxxxx包,也要签名,否则将来使用时会提示签名不一致的错误!
[Unknown]:ChinayourCompany
您的组织单位名称是什么?
[Unknown]:
您的组织名称是什么?
[Unknown]:Company
您所在的城市或区域名称是什么?
[Unknown]:City
您所在的州或省份名称是什么?
[Unknown]:Province
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
(在没有指定生成位置的情况下,keystore会存在用户系统默认目录,如:对于window xp系统,会生成在系统的C:\Documents and Settings\UserName\文件名为“.keystore”)
正在添加:org/apache/commons/
正在添加:org/apache/commons/logging/
正在添加:org/apache/commons/logging/impl/
。。。
。。。
接着输入:
D:\yourProj\webroot\app>jarsigner -verbose -certs yourCompany-app-v1.0.1.jar yourProj
例:KEY_ANSWER.lst
password
password
Ren Jian
The CUCKOO Workgroup
Sun Yat-sen University
Guangzhou
Guangdong
CN
是
(后面加两个换行)
KEY_PWD.lst
password
(换行)
selfsign.cmd
%JDK_BIN%\jarsigner -keystore %KEY_FOLDER%\cuckoo.keystore %1 cuckoo <KEY_PWD.lst
如果它是匿名的,系统会询问用户是否打算信任JAR的签署者。
1.首先生成签名文件,执行完成后,会在本目录内生成一个.keystore的密钥文件,2kByte大小。
yourProj是别名keypass后面是密文密码,keystore密码是存储密码(要改变此文时需要输入确认此密码)
在dos命令提示状态下输入
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码
输入命令:
C:\Documents and Settings\Administrator>keytool -genkey -alias yourProj -keypass yourCompany:Kouling -selfcert -validity 7200
屏幕提示:
输入keystore密码:yourCompany:yourPassword
-printcert 查看导出的证书信息 keytool -printcert -file yushan.crt
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
2. 运行key.cmd产生key
3. 单个文件签名
命令: sign.cmd [jar]
4. 对指定文件夹下所有文件批量签名:
命令: batchsign.cmd [jar_folder]
java keytool 使用总结(转)
2011-08-16 15:34
Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据:
下面是各选项的缺省值。
-alias "mykey"
-keyalg "DSA"
-keysize 1024
-validity 90
-keystore 用户宿主目录中名为 .keystore 的文件
-file 读时为标准输入,写时为标准输出
1、keystore的生成:
分阶段生成:
keytool-genkey-alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore
注意:-validity 7200这个就是加时效的参数,7200单位是“天”。
检查密钥文件,输入命令:
C:\Documents and Settings\Administrator>keytool -list
屏幕提示:
输入keystore密码:yourCompany:yourPassword
Keystore类型:jks
2009-04-30 18:37 550,863 yourCompany-app-v1.0.1.jar
输入命令:
jarsigner -verbose -certs commons-logging-1.1.jar yourProj
注:
verbose输出详细信息
certs表示验证此jar包时输出证书信息
C:\Documents and Settings\Administrator>keytool -genkey -alias yourProj -keypass yourCompany:Kouling
[回车],屏幕提示:
输入keystore密码:yourCompany:yourPassword
您的名字与姓氏是什么?
set KEY_FOLDER=E:\DigitalSignature
key.cmd
call set.cmd
%JDK_BIN%\keytool -genkey -keystore %KEY_FOLDER%\cuckoo.keystore -alias cuckoo <KEY_ANSWER.lst