给jar包进行数字签名文档
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
copy Bookmark 文章转载至http://www.51testing.com/?226261 如何给jar包进行数字签名 目的: 为了使Applet或者Java Web Start程序能够访问客户端本地资源,需要对Applet或者JWS程序jar包进行数字签名,之后客户端打开Applet或者JWS程序的时候会提示是否允许该程序访问本地资源,用户如果要用你的程序,当然只能选择OK了。这样你的程序就能按照某种访问权限来访问客户机的本地资源了。 签名步骤: 1.将程序打成jar包。 这个我就不多说了,用eclipse,netbeans等开发工具很方便就能打包的。 2.用keytool命令生成.store文件。 在任意文件夹下建立一个keytool.bat文件,输入 keytool -genkey -keystore xxx.keystore -alias xxx -validity 3650 保存,双击执行。将在当前目录下生成一个xxx.keystore文件, -alias后接的是别名,-validity后面接的是该证书有效天数,这里3650表示10年。(用这个证书签名的程序10年内有效)。 3.用jarsigner程序对jar包进行签名。 新建jarsinger.bat文件,输入 jarsigner -keystore xxx.keystore helloworld.jar xxx 这样helloworld.jar就被签名了。 applet应用程序的数字签名应用实战 最近在研究applet,打算使用applet来开发一个上传文件上传控件,之前因为一直觉得applet的沙箱控制导致applet不能主动的访问客户端的资源,所以也曾因此而放弃.不过最近在研究applet的签名后,有了点收获,可以通过签名jar文档来达到这样的控制策略,下面是我在实际实验过程中的一些心得和体会,跟大家一起分享下.(注:如果转载此文,请注明出处和作者,尊重作者的劳动成果,谢谢) 一、压缩你的class类文件为jar包 1.假设你的需要压缩的类文件存在的包为:cn.mbq.test1和cn.mbq.test2 2.进入你的classes目录,在DOS窗口中执行命令:jar cf mytest.jar cn.mbq.test1 cn.mbq.test2 3.执行命令后你会在当前目录中找到mytest.jar文件,这个就是刚才生成的档案文件。你可以修改它的后缀为rar,然后使用winrar压缩程序打开它查看看是否正确。 二、使用keytool工具生成密匙库 1.keytool工具位于${java_home}/bin目录下; 2.在DOS窗口中执行命令:keytool -genkey -keystore mytest.store -alias mbq 注意:mytest.store 是你的密匙库的名称,可以随意修改,后缀请不要修改! mbq 为别名,这个也可以改成自己的名称 3.执行上述命令后,DOS窗口中会提示你输入keystore的密码、你的姓名、组织单位等等信息。这里要注意的是输入密码请记住,后面要用到的。在最后,我们输入y确认信息。然后再直接回车设置mbq的主密码和store密码一致即可! 三、使用keytool工具导出签名时用到的证书 1.在DOS窗口中执行命令:keytool -export -keystore mytest.store -alias mbq -file mbq.cert 注意:mytest.store 就是第二步生成的密匙库名称 mbq 也是在第二步中我们指定的别名 mbq.cert 为我们生成的证书的名称,可以自己修改名称,注意后缀不要改 2.命令执行成功,我们会在当前目录下找到一个mbq.cert文件,这个就是我们刚才生成的证书。 四、使用jarsigner工具签名jar压缩文档 1.jarsigner工具位于${java_home}/bin目录下; 2.在当前DOS窗口中执行命令:jarsigner -keystore mytest.store mytest.jar mbq 注意:mytest.store 就是我们在第二步中生成的密匙库名称 mytest.jar 就是我们这第一步压缩的jar文档 mbq 是提供者的名称,我们这里设置为我们的别名 五、创建mytest.policy文件 1.在当前目录下创建一个mytest.policy文件,其内容如下: keystore"file:mytest.store","JKS"; grantsignedBy"mbq" { permission java.io.FilePermission"<>","read"; }; 2.这个文件的意思就是说让所有由mbq签名的applet都可以对本地的所有文件进行读操作。 六、归档文件 通过上述的五个操作后,我们会在当前目录中找到如下几个文件:mytest.jar-签名后的jar文档、mytest.store-密匙库、mbq.cert-证书、mytest.policy-访问策略文件。如果没有这些文件,那么你的applet数字签名过程就没有正确的完成,请检查上述的操作。以后,如果对打包的java文件做了修改,那么就需要重新签名一次才可以! 七、在网页中运行applet 1.假设你的applet中的主启动类为:cn.test.TestApplet.class;整个前面生成的档案文件、证书啊存储在目录:d:\test\myapplet下; 2.建立一applet_test.html文件存放在任何目录下都可以,然后内容如下: Java代码 1. 1 ... 2. 2 ... 3. 3 5. 5 6. 6 1 ... 2 ... 3 5 6 注意:其中的CODEBASE就是你的类的基础目录,CODE也就是你的APPLET的启动主类,ARCHIVE也就是签名后的JAR文档。 2.然后在IE中打开该html文件,那么会看到IE提示你是否信任该插件,也就是说我们的证书起作用了,然后确定运行后,就可以在页面上看到applet的运行效果了。 但是由于SUN和MS的问题,目前IE并不支持最新的JRE,而是使用MS自己开发的JRE,所以这个也是影响APPLET发展壮大的一个原因。而且正是由于这个原因,SUN的java-plugin技术才会出现。使用SUN的java-plugin技术我们就可以在applet中使用最新的JAVA类库了。由于IE在遇到APPLET标签的时候会调用自己的JRE,但是如果客户机器上安装的JRE不是我们想要的版本,那么就会出错了。所谓java-plugin技术就是利用IE的插件机制来制定我们想要的JRE,我们可以在IE中使用OBJECT标签来调用APPLET,这样就不会引用MS的JRE了,从而达到我们想要的效果,而且java-plugin技术不仅仅支持IE,还支持Navigator等浏览器。不过我们需要编写比较复杂的HTML代码了,但是这一且SUN已经帮我们做到了,呵呵,在JDK1.4或更高的版本中SUN提供了一个HtmlConverter.exe工具来帮助将包含applet标签的html转换成包含OBJECT和EMBED标签的html代码,该工具位于${java_home}/bin目录下,对于1.4以前的版本该工具则是单独提供的,不过现在几乎都是1.4或1.5甚至更高版本的JDK了吧,呵呵。 该工具很简单,是图形化的工具,我们直接运行即可。比如我将上面的包含applet的html转换后(比如我选择只支持IE的),其代码变成了如下: Java代码 1. 01 ... 2. 02 ... 3. 03 本文来源:https://www.wddqw.com/doc/250fea030640be1e650e52ea551810a6f524c841.html