一、 技术难点 Java Applet操纵本地扫描仪主要有以下的技术难点: 1. JDK Sandbox的限制:出于安全性考虑,普通的Java Applet的只能运行于JDK的Sandbox之中,不能访问本地文件系统,不能建立除它所在服务端之外的网络连接等等,要操纵本地扫描仪就需要突破这些限制。 2. Java 3. 其它技术难点:主要是涉及到Java数字签名技术,包括密钥对的生成和保存,证书文件的到如何到出,本地策略文件的配置,Jar文件的签署,证书的 二、 问题的解决思路: 以上存在的技术难点需要逐一解决: 1. 2. 解决Java操纵硬件设备的限制:需要通过查找资料,寻求一个相对来说比较简单的操纵扫描仪的方法。 三、 实际解决方法和采用的技术 1. 突破JDK Sandbox限制的解决方法: 通过查找资料和与其他人交流,找到突破JDK Sandbox限制的两个方法: 1)修改本地JRE(Java 2 Runtime Environment)策略文件java.policy,在其中加上一段代码: grant codeBase"URL" { permission java.security.AllPermission; }; 其中的URL是你要运行的Jar文件的地址,这样此Applet即可获得所有权限 2)采用 Ø 生成密钥及密钥库: keytool –genkey –keystore dragon.store –alias jizd 这个命令用来产生一个密匙库,执行完毕后应该在当前目录中产生一个dragon.store的文件,其中存放着一对密钥,这里的jizd是密钥所有者的名字 Ø 导出公有密钥成为一个X.509格式的证书: keytool –export –keystore dragon.store –alias jizd –file dragon.cer 这个命令用来产生验证签名时所要用的证书。 Ø 用私有密钥签署Jar文件: jarsigner -keystore dragon.store MyApplet.jar jizd 这个命令用上面产生的私有密钥将我们的jar文件进行了签名。 Ø 将证书中的公有密钥导入到客户密钥库中: keytool –import –keystore guest.store –alias jizd –file dragon.cer Ø 用Policytool生成运行此Applet的策略文件: 应该生成一个applet.policy策略文件,策略文件中着名了验证此前名Jar的密钥库的URL和公有密钥,以及此Applet应获得的权限。 Ø 修改客户端的${java.home}/jre/lib/security目录下的java.security文件: 在其中添加一行: policy.url.3=URL/applet.policy URL为存放Applet.policy的服务器路径。 具体配置时,最后一步可以通过编制一个小程序自动完成,前几步完成后将所有的文件在服务器端部署。 由于系统的网络自成体系,不会和Internet相连,所以不必要购买权威机构签发的软件 2. 解决Java操纵硬件设备的限制:由于JNI编程的复杂性,所以经过从网上寻找找到了一个Twain for Java的包,此包完成了整个Java 操纵扫描仪所需的所有JNI接口,大大减轻了编程的复杂性工作量,同时通过对它的示例程序的研究,完成了一个操纵扫描仪的简单Applet,配合上一个技 术难点的解决,已经可以从IE中操纵本地扫描仪。 3. 其他技术难点的解决,关于内嵌Swing 的Applet的IE网页代码的编写比较复杂,采用AWT控件的Applet嵌入网页时采用<Applet>标签即可,但是采用Swing控 件的Applet嵌入网页时需采用<Object>标签,代码繁杂冗长,工作量比较大,解决办法是首先编写采用<Applet> 标签的网页,然后采用Sun的HTMLConverter工具(可从Sun.com上免费下载)批量转化即可。 四、 采用的关键技术及实现情况。 1. 突破JDK Sandbox限制技术: i. 修改客户端策略文件——已实现 ii. 数字签名——已实现 2.解决Java操纵扫描仪限制:采用现成的Twain for java包——已实现 此包是试用版,正式版报价2000$,有待于寻找类似的免费开发包。 3. 用Swing控件的Applet的网页的编写,采用Sun HTMLConverter——已实现 五、 技术实现的代价: 主要技术点 时间代价 成本代价 修改客户端策略文件 半天 0 数字签名的相关技术 3天 0 解决Java操纵扫描仪限制(JNI) 3天 暂时无法计算 Swing控件的Applet的网页的编写 半天 0 服务器端和 六、 不完善或有待于解决的问题: 当前不完善或有待于解决的问题主要是Java操纵扫描仪的包是试用版,购买正式版需花费2000$,还需要寻求一些免费的或者价格低廉的开发包。 七、 技术前景 八、 参考资料: http://www./Doc_CodeSigning.shtml http://forum.java./ http://java./docs/books/tutorial/security1.2/toolsign/index.html |
|