a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 135|回复: 0

[专业语言] Java认证辅导之在Applet中实现数字签名

[复制链接]
发表于 2012-8-4 12:44:44 | 显示全部楼层 |阅读模式
Java认证辅导之在Applet中实现数字签名) ?) r6 E( d! ^0 B, t
写一个Applet,其中涉及到对本地文件的读或写操作用于测试目的。可以先予以执行,想必应该是会抛出java.security.AccessControlException的。2 k9 b$ H1 K  C8 C3 M8 i9 p, Y
下面实现签名:(代码本身无须任何更改); ~1 Q; O* M5 g, ]
注:下面所使用的keytool或jarsigner命令只存在与Java2中,1.1中为javakey.且二者的安全模型有很大的差异,故务必首先确定你所使用SDK的版本。' a7 r" M, d) L$ T$ {, _+ S! u
(1)使用keytool命令建立自己的密钥库并生成X.509自签名证书。
$ a5 \/ Z% e; H% B下列的命令很长时间都不使用了,具体参数什么的都忘完了,故只给出大概的参数,至于具体用法请参阅文档。# o9 X0 r7 K! i3 o( r
keytool -genkey -alias xiewuhen(这里似乎应该是密钥库的项目);
/ \: U" i* w. A/ S& r下面按照提示一步步进行下去即可。6 d% a" d* u8 Q- M- r* O4 X% s
(2)把Applet类文件打包成jar.6 [0 I2 Z6 Z, @& V
(3)利用jarsigner签名jar文件。
6 ^3 [/ x  I+ Cjarsigner applet.jar xiewuhen(这个applet.jar是你要签名的jar文件,xiewuhen是你前面在密钥库中生成的项目)' L0 S. e2 I* S& I
(4)检查jar文件,在meta-inf目录下应该会出现两个新文件,xiwehen.SF,xiwuhen.DSA.注意xiewuhen这个密钥项目只是事例,具体是什么依赖你最初使用keytool所生成的项目。其中SF文件是签名文件,是一个ASCII文件,保存了签名过程中使用的摘要算法。DSA文件是一个二进制文件,保存了签名和数字证书。最后一点就是文件扩展名具体是DSA还是RSA取决你使用的签名算法,默认是DSA,可以在keytool参数中指定RSA算法。- \. ~; g9 G& P, Z) e* E7 k- F* d" N9 c. p
(5)若你是在单机且只有一个密钥库的机器上测试,下一个步骤可以省略因为这牵涉到证书的导入导出的问题。由于你签名方和验证方共用同一个密钥库,那证书就无须导来导去了。但为了模拟真正的环境,所以还是建议在多机上测试或建立多个密钥库。! @) D' ^: d( p0 x' U
(6)使用keytool -export -file -alias等一系列参数将证书导出,保存成crt格式,可以在流览器中配置该证书。但我们暂不考虑这种情况。再次使用keytool -import -file -alias命令将证书导入验证方的密钥库。注意alias指定的别名务必和生成时的一模一样。# `# R7 Y9 J* F5 K
(7)修改策略文件。该文件位于主目录的/lib/security/中,是java.seucrity文件。至于你的Java主目录是什么,可以查看java.home系统属性。9 Q( g, k: e0 D
(8)如下修改策略:+ c& o) Q5 t" s4 m
//指定的的密钥库路径。type目前只能是JKS(Sun的默认实现),可以省略。
3 A( O" M% S0 E2 n# Z& ]$ Z8 w! P/ tkeystore “keystoreURL”,“keystoreType”; grant signedBy “xiwuhen” codeBase “这里指定Applet的装入URL,若是文件URL须在前面加上file: 注意这里务必不可省略,否则Applet就会共享其他的策略了4 z  J3 d- `2 {7 d( X
{8 u0 P+ i% K% }0 H, d0 u+ {
permission java.io.FilePermission ”autoexec.bat“,”read“; //上面的权限只是一个例子,依据你的要求给出具体策略。
) T2 {; j2 `& n3 x};7 ]9 e# {. Q2 L- {  u# z8 ^
最后还有一点就是Applet可以有许多人顺序签名,若是那样的话,signedBy中的各个签名者之间是和的关系,而不是或。也就是说比如signedBy ”a,b“那必须两人都签了名名才行,只有其一是不予通过的。: L) e) o, m! p( M& b, G8 j/ B" P
关于证书的问题,由于这里我们使用的是自签名证书,所以只能用于测试目的,在真正的商务活动中是不会有人信任这种证书的(想必你也不会信任来路不明的证书)。要想真正用于实际须向证书机构(CA)申请并购买数字证书。类似机构大的主要有Verisign,Thawte等。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-14 03:39 , Processed in 0.314179 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表