java applet 签名问题

摘要: 用eclipse 开发了一个applet 应用,部署到网页上面,运行时,总出现一个错误: Error:access denied ("java.net.SocketPermission" "192.168.0.50:5500" "connect,resolve") 其实出现这个错误的一个重要原因是,applet没有签名。因此不能访问本地资源,包括socket,涉及I/O的一些操作

用eclipse 开发了一个applet 应用,部署到网页上面,运行时,总出现一个错误:

Error:access denied ("java.net.SocketPermission" "192.168.0.50:5500" "connect,resolve")

其实出现这个错误的一个重要原因是,applet没有签名。因此不能访问本地资源,包括socket,涉及I/O的一些操作。

解决方法如下:

一、用ECLIPSE 将 applet  打成JAR 包
二、使用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"<<ALLFILES>>","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文件存放在任何目录下都可以,然后内容如下:

<HTML> 
<BODY> 
<APPLET CODE="cn.test.TestApplet.class" ARCHIVE="mytest.jar" WIDTH=200 HEIGHT=100 name="myapp">   </APPLET>    
</BODY>
</HTML>

  


现在再运行这个 applet 就发现可以访问本地资源了,如果细心点再用 winrar 打开  jar 包,你会发现在META-INF文件夹下增加了不少东西。


上一篇: 在Eclipse中远程Debug Applet
下一篇: 让python,django网站支持rss,feed
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号