首先声明,我是个Java初学者,在这里谈一谈Applet和数字签名的问题。
据我所知Applet实现对本地文件进行读写的方法有两种。
1.修改Java_Home\lib\security\java.security文件,并把自己写好的.policy文件放到指定的目录中。
2.对Applet所在的Jar包进行数字签名。
先说说修改Policy文件的方法。这个方法实现起来比较简单,而且只要在.policy文件中进行一定的设置,Applet程序几乎就可以访问本地磁盘里的所有文件了。但是这种方法的一个最大缺点就是要改客户端Jre的java.security文件。在实际应用中,这样的做法不太现实。不可能每个用户为了用你这个Applet去修改自己的安全配置文件,况且很多用户根本不知道Jre是什么。
再说说数字签名的方法,网上也有很多关于数字签名的文章,在这里就不敖述了。大概的方法是:
1、keytool -genkey -keystore someone.store -alias someone 这个命令用来产生一个密匙库,执行完毕后会在当前目录下产生一个soneone.store的文件,这里的someone是我自己写的名字,你可以对它进行修改。另外在执行命令的时候还有提示你输入密匙库的密码,这里你一定要记住,否则后面要用的时候无法输入。
2、给你的Applet打包成jar文件,这个都会吧?jar -cvf ****.jar / .
3、给jar包签名:
jarsigner -keystore someone.store MyApplet.jar someone
这个命令就是用我们刚刚生成的密钥给jar文件进行签名。
问题来了,是不是只要有了数字签名那Applet就可以在任何情况下读写任何文件呢?好像不是那么回事!
今天就遇到一个问题我写了一个 Applet,这个Applet的基本功能是文件的上传和下载。既然是上传就要从本地读文件,下载当然要往本地写文件了。原来用了修改Policy的方法,可以很顺利地实现上传下载。但想想需要每个客户端都要修改Policy不太可行。于是决定用数字签名。
我用了上述方法给我的Jar包签了名,但是当我上传文件的时候出了问题java.secruity.AccessControlException: access denied (java.io.FilePermission myfile.dat read)
怎么回事?下载文件的时候也是同样的问题。后来终于搞清楚了。
先说说我的页面结构:页面就是一个普通的html静态页面,html页面中嵌入了一个Applet对象和三个<input>按钮分别是《上传》《下载》《关闭》并通过JavaScript来调用Applet中的上传,下载的方法。问题就是出在这里。从Java的安全模型上我们应该不难理解问题的原因了吧。虽然Applet是已经签过名的,但是如果被JavaScript调用并试图访问本地资源,这就违背了Java的安全策略,所以当然会抛异常。
解决的方法就是让Applet自己独立来完成上述的上传,下载工作。即把页面里的《上传》,《下载》按钮放到Applet里面。问题解决!
第一次写文章,不足之处请多指摘!
分享到:
相关推荐
NULL 博文链接:https://stephen830.iteye.com/blog/254549
Applet做数字签名,授予访问本地资源
java applet 数字签名按步骤添加策略文件可以解决applet在浏览器中访问本地的安全问题
压缩包里面word文件说明了使用JavaApplet时客户端运行jar包的生成方法及如何数字签名,JavaAutoPlug.exe是帮助我们完成打包和签名的一个工具,需安装Framework2.0。
用Ant技术命令打包Applet并添加数字签名
当你applet要进行客户端操作时,如读取本地文件,沙箱原理使你的applet必须得到信任,此时对applet进行签名就可以解决这个问题
利用数字签名超越Java Applet的安全限制
applet签名 jar签名工具
java 通过web应用访问本地资源,例如web服务器,通过客户端调用applet访问本地的ipmac地址
是为软件公司和对数字签名有兴趣的人创造一个环境,以便他们能为开放协作系统开发开 源组件。 OpenOCES项目提供了一个有用的组件——OpenSign,为符合标准的浏览器添加数字签 名功能,而不需要额外的插件。这个...
applet下载操作实例,对本地文件操作署名问题。
采用Ant来编译工程,并针对Applet进行打包,添加数字签名。
对Java Applet和Java Web Start进行数字签名
转载:applet来操作本地文件。 数字签名:采用加密技术来实现对签名者身份的认证和数据的完整性。简单的说就是你签字的文件别人知道是你签的,并且知道这个文件是否被修改过。 我们可以通过 数字签名 applet的jar...
2022年Java2下Applet数字签名Java教程.docx
一个appelt提升权限的demo. 设计到数字签名,创建policy文件,提升权限等问题。
所有的Japplet小应用程序要运行访问本地资源的时候,出于安全的考虑,必须要实现数字签名,否则不能访问,此工具自动签名。
详细讲解了applet的签名过程,自己亲自试过
Java Applet小程序的数字签名和客户端认证
可以自动完成对jar包的数字签名 如对挂在网页上的applet进行数字签名