java applet签名_java applet 签名问题

用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"<>","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文件存放在任何目录下都可以,然后内容如下:

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值