如何实现Java2的Applet数字签名和认证?第一步,使用JRE1.3.0_01(JAVA运行环境1.3.0.1版)客户端来代替IE的JVM(JAVA.SUN.COM),然后到WWW.JAVA.SUN.COM网站下载,然后下载后,先在客户端进行安装。服务端调用APPLET的HTML文件中还需要包括它,这样没有预先安装JRE的客户端下载。
以下是详细的步骤:
I.服务器端设置:
1.解压程序所需的各种包文件(我在这里使用jarxfweblogicc.jar命令,用于WEBLOGIC的JMS包)随后,用JDK的打包命令将被编译的监控程序.class和刚刚解压的包打包在一个包中。(前提我已将监视程序和已解出的包放在同一目录下),它们都是dos状态的命令,具体的命令在jdk1.3(1.2)的bin目录下。
其指令是:
jarcvfmonitor.jar*.class。
这个命令生成一个名为monitor.jar的包。
2.keystore和keys是刚刚创建的(monitor.jar)包文件。在这些密钥中,keystore将用于存储密钥(privatekeys)和公开密钥的认证,alias在这里被称为monitor。
其指令是:
keytool-genkey-keystore–aliasmonitor。
这个命令生成一个名为monitor.keystore的keystore文件,然后系统会问你很多问题,例如,你公司的名字,你的地址,你要设置的密码等等。
3.使用刚刚生成的key为jar文件签名。
其指令是:
jarsigner-keystoremonitor.keystoremonitor.jarmonitor。
该命令将签署一个monitor.jar文件,并且不生成任何新文件。
4.将公用钥匙导入一个cer文件,这个cer文件是要复制到客户机的惟一文件。
其指令是:
keytool-export-keystor--aliasmonitor-filemonitor.cer.cer。
这个命令会产生monitor.cer认证文件,当然,这几个步骤也会询问您刚刚设置的密码。这将在服务器端完成安装。此时,您可以将jar文件和keystore文件与cer文件合并起来(monitor.jar,将monitor.keystore,monitor.cer)复制到服务器目录下,使用weblogic6.0,因此,请复制C:eawlserver6.0configmydomainapplicationsDefaultWebApp_myserver下面创建的目录下。
二.客户:
1.您应该先安装jre1.3.0_01,然后将服务器端生成的monitor.cer文件复制到特定目录jre下,这里是:
c:programfilesjavasoftjre.3.0_01libsecurity目录下。
2..把公钥倒进jre的cacerts(jre的默认keystore)
其指令是:
keytool-import-aliasmonitor.cer。
-keystorecacerts。
在这里,要您输入cacerts的密码,它应该是changeit,而不是您自己设置的keystore密码。
3..修改policypolicypolicytool,在dos状态下使用policytool命令。
该系统自动弹出policytool对话框,如图4所示,其中file菜单的open条目首先选中,打开c:program。
filesjavasoftjre.3.0_01libsecurity目录下的java.poliy文件,接着在编辑菜单中选择Changekeystore,对话框中newkeystoreurl:中输入。
file:/c:/programfiles/javasoft/jre/1.3.0_01/lib/security/cacerts这里要注意反斜线,将JKS输入到newkeystoretype,它是固定格式的cacerts,接着,点击AddPolicyEntry,在对话框中出现CodeBase输入:
http://URL:7001/*
这个URL是服务器的IP地址,7001是我的weblogic端口,如果你在其他应用服务器上使用apache,那么这个端口号就不会出现。
输入(别名alias)到SignedBy中:这是Monitor然后单击addpeimission按钮,请在对话框的permission中选择您希望为此applet提供的权限,这里有很多特定权限,阅读器可以自己查阅资料。这里选择了allpeimission,在右侧signedBy中输入了别名:monitor。
最终在文件菜单中保存保存条目。
您可以看到,我已为多个包实现了签名认证。
因此,完成客户机设置。当客户端使用ipad来运行这个applet程序时,会问你是否授权了签名,在选择了授权之后,这个软件包将自动从服务器下载到本地计算机,并且它将自动启动jre,在右下栏中可以看到java。
4.为applet调用html文件。
众所周知,由于java2具有安全性,调用applet的html文件将不再可用,而是被ActiveX类型调用取代。特别是用ipad和nescape来写不同的文字,这可以在sun网站上找到。关于这一点,我就不多说了,只想让大家看一下我的这个小程序。
三.信息中心实时监测平台。
在这里,我要强调一点,因为applet每次修改都需要对签名进行重新打包,这是一件很麻烦的事情,因此,在具体的实现中,将改变参数放在html文件中,并传递到applet.
另一位就是有朋友问我,那样就没那么麻烦,每个客户端都要执行复杂的dos命令操作,可以说,一是目前,我的级别只能把一个已完成的客户端文件cer文件和java.policy以及cacerts文件直接复制到客户机,自然这也有缺陷,如果别人的电脑已获得认证,将会丢失。
此外,在打包时,还需要做一些小的优化,我在这里只讨论包和源程序,以便将与安全相关的程序输入到包中。因此,如果包很大,将对下载速度造成很大的影响,如果能用本地电脑的软件包,jre也是这么做的,特别是在控制面板的jre控制台上。