=============================================================
标题:JAVA JNLP组件数字签名制作步骤
关键字:JNLP 数字签名 java
作者:iuprg
2009 5.15
领域:Java j2ee
web 页面 JNLP组件下载运行的数字签名
[本文禁止转载,属于个人笔记]
=============================================================
这个证书签名需要专门购买,中国的数字签名机构好象还不成熟吧?
我这里只讨论自己的证书,也就是匿名的证书。
为JAR签名需要两个工具:
1。用keytool来创建一个密匙(同时指定时效,多久会过期,默认只给 6个月)
2。用JARSigner用此密匙为JAR签名。
可以用同一个密匙来为多个JAR签名。
注意:大小写,签名一致,数字签名过期
[谢绝转载,如有刊登请email联系drs163@163.com]
为什么JAR要被签名?当用户启动一个Java Network Launching Protocol (JNLP,Java网络加载协议)文件或使用一个applet时,这个JNLP或applet可能请求系统提供一些非一般的访问。比如“文件打开”等进行这样的请求,就需要签名的JAR。
如果它是匿名的,系统会询问用户是否打算信任JAR的签署者。
1.首先生成签名文件,执行完成后,会在本目录内生成一个.keystore的密钥文件,2kByte大小。
yourProj是别名 keypass后面是密文密码,keystore密码是存储密码(要改变此文时需要输入确认此密码)
在dos命令提示状态下输入
C:/Documents and Settings/Administrator>keytool -genkey -alias yourProj -keypas
s yourCompany:Kouling
[回车],屏幕提示:
输入keystore密码: yourCompany:yourPassword
您的名字与姓氏是什么?
[Unknown]: ChinayourCompany
您的组织单位名称是什么?
[Unknown]: ChinayourCompany.com
您的组织名称是什么?
[Unknown]: Company
您所在的城市或区域名称是什么?
[Unknown]: City
您所在的州或省份名称是什么?
[Unknown]: Province
该单位的两字母国家代码是什么
[Unknown]: CN
CN=ChinayourCompany, OU=ChinayourCompany.com, O=Company, L=City, ST=Province, C=CN 正确
吗?
[否]: Y
[谢绝转载,如有刊登请email联系drs163@163.com]
2.为此密钥加 有效期限:7200天,将近20年. [嘿嘿,足够用了吧? 再也别想6个月]
输入命令:
C:/Documents and Settings/Administrator>keytool -genkey -alias yourProj -keypass yourCompany:Kouling -selfcert -validity 7200
屏幕提示:
输入keystore密码: yourCompany:yourPassword
注意:-validity 7200 这个就是加时效的参数,7200单位是“天”。
检查密钥文件,输入命令:
C:/Documents and Settings/Administrator>keytool -list
屏幕提示:
输入keystore密码: yourCompany:yourPassword
Keystore 类型: jks
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工具
切换到项目jar包所在目录
D:/yourPassword's--works/yourProj/webroot/app 的目录
输入dir可以看到:
2009-04-30 18:37 <DIR> .
2009-04-30 18:37 <DIR> ..
2009-04-30 17:55 56,317 commons-logging-1.1.jar
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包时输出证书信息
屏幕提示:
输入密钥库的口令短语: yourCompany:yourPassword
输入 yourProj 的密钥口令: yourCompany:Kouling
正在添加: META-INF/YOURPROJ.SF
正在添加: META-INF/YOURPROJ.DSA
正在添加: org/
正在添加: org/apache/
正在添加: 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
屏幕提示:
输入密钥库的口令短语: yourCompany:yourPassword
输入 yourProj 的密钥口令: yourCompany:Kouling
正在添加: META-INF/YOURPROJ.SF
正在添加: META-INF/YOURPROJ.DSA
正在添加: org/
注意:重要签名给yourCompany-app-v1.0.1.jar文件,但它使用了另外的几个commonsxxxx包,也要签名,否则将来使用时会提示签名不一致的错误!
4。打开jar包文件的 META-INF目录可以看到
yourProj.SF
yourProj.DSA
以及被扩充的MANIFEST.MF文件
表明已经加入了签名文件
[完毕]
[演示图片]
1。签名文件
2。实际运行时的签名提示图和时效[谢绝转载,如有刊登请email联系drs163@163.com]