在这里先对大家说声对不起,毕竟2年前就想写这篇文章,但因为自己太懒惰一直没有写,也是为了给自己留点东西好了,前些日子我老大让我又搞这个东西发现我以前的资料没留,又凭着自己印象从新来过,但发现网上写的东西真的有些肤浅,实在说不过去,毕竟我们是程序员,不是学生了,怎么也点多想些东西哦,于是将自己总结的东西写下来,留给初学者一些启示好了,通过学习一下内容您将具备通过服务器完全访问本地客户端的能力,不在受任何权限的困扰,(很多文章都写需要改 客户端本地的策略文件,其实根本没必要,只要客户端点了俺们的数字签名,俺们可就什么都能干了) ~oo~
简单说下 Applet 数字签名是怎么回事: 就是applet 利用 jdk 里的 工具 $JAVA_HOME/bin 下面的 一堆 exe 文件进行 服务器访问本地客户端的安全签名。如果想让客户真的信任你的applet签名,可以花几百大元去 CA 旗下的 versign 公司购买可信任的 签名证书。
本文主要以Tomcat为中间件,讲述具体签名步骤,其中 $JAVA_HOME 为 jdk 的安装目录、$TOMCAT_HOME为 Tomcat 的安装目录
实现Applet的签名步骤如下:
1. 设定环境变量 $JAVA_HOME (方便在windows 系统下的任何一个目录都可以直接 使用 $JAVA_HOME/bin 下的 exe 命令,其中的exe 包括 keytool.exe,jarsigner.exe和HtmlConverter.exe )。
2. 将 $TOMCAT_HOME 下 webapps 目录的ROOT目录拷贝一份,删除没有用的垃圾东西改成自己的web应用名字。例如 : webapplet 将需要签名的jar 拷贝到 $TOMCAT_HOME/webapps/webapplet 下,在这里需要 注意一点:签名jar 包 就要对 整个 工程 引用涉及到的 jar 包都进行签名,否则少签一个你都运行不起来的!
3. 建立一个测试的html页面 applet.html
<APPLET
CODEBASE = "."
CODE = "com.aspire.reportPlatform.webagent.WebAgentApplet.class"
ARCHIVE ="applet.jar"
NAME = "TestApplet"
WIDTH = 400
HEIGHT = 300
HSPACE = 0
VSPACE = 0
ALIGN = middle
>
</APPLET>
4. 打开 cmd 命令提示符,在$TOMCAT_HOME/webapps/webapplet 下运行 HtmlConverter
例如: F:/appletTomcat/webapps/webapplet>HtmlConverter
弹出个窗口,在窗口中输入需要转换的 html文件 例如我刚才写的applet.html,转换完的东西 写jsp 也同样适用的。
转换完如下所示 :
<!--"CONVERTED_APPLET"-->
<!-- HTML CONVERTER -->
<object
classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = "http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=5,0,0,1"
WIDTH = 400 HEIGHT = 300 NAME = "TestApplet" ALIGN = middle VSPACE = 0 HSPACE = 0 >
<PARAM NAME = CODE VALUE = "com.aspire.reportPlatform.webagent.WebAgentApplet.class" >
<PARAM NAME = CODEBASE VALUE = "." >
<PARAM NAME = ARCHIVE VALUE = "applet.jar,commons-codec-1.3.jar,commons-httpclient-3.1.jar,commons-logging.jar,dom4j.jar,FlowMetaData.jar,ibatis-2.3.2.715.jar,jgraph.jar,log4j-1.2.9.jar,MetaDataManage.jar,ojdbc14.jar,RDPCommon.jar,swing-layout-1.0.jar,ws-commons-util-1.0.1.jar,xmlrpc-client-3.1.jar,xmlrpc-common-3.1.jar" >
<PARAM NAME = NAME VALUE = "TestApplet" >
<param name = "type" value = "application/x-java-applet;version=1.5">
<param name = "scriptable" value = "false">
<comment>
<embed
type = "application/x-java-applet;version=1.5" /
CODE = "com.aspire.reportPlatform.webagent.WebAgentApplet.class" /
JAVA_CODEBASE = "." /
ARCHIVE = "applet.jar" /
NAME = "TestApplet" /
WIDTH = 400 /
HEIGHT = 300 /
ALIGN = middle /
VSPACE = 0 /
HSPACE = 0
scriptable = false
pluginspage = "http://java.sun.com/products/plugin/index.html#download">
<noembed>