有没有其他方式使用签名小程序

时间:2010-11-16 18:32:50

标签: java class applet loader signed

如果我想部署高权限小程序,则需要对其进行签名。为此,创建证书,然后使用jarsigner签署jar文件。之后在HTML代码中,必须指定我们之前签署的代码,代码库和存档(jar)。

但是我编写了一个servlet,它有两个作用:

  1. 它位于代码库指向的URL处,并为applet提供类字节码。
  2. 同一个servlet也使用序列化与applet进行通信,每当applet获得一个类时,它就不知道它会进入最终返回servlet的代码库。
几乎像迷你RMI设置但更简单。我希望你能看到这方面的力量。

不幸的是,对于签名的applet,需要存档。现在,servlet也能够加载Certificate对象,并且也可以将它发送到applet。所以这里是设置:在一点上,applet接收类字节码,它也有证书。如果applet可以使用该证书实例化所有收到的类,那将是很好的(否则jar中的代码已经签名,而外部不会向用户提示令人讨厌的消息)。

所以我的问题对你很好的Java爱好者:    我是否可以通过任何方式使用字节码数据和证书将类实例化为签名对象,以便插件弹出安全对话框,接受证书并提升对象的权限。我能找到的是有一个CodeSource类接受代码库URL和证书,对签名过程至关重要。我不确定如何拦截applet中的类加载来安装通过存档通过JAR文件获得的其他证书。

你怎么说? 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不相信使用即时生成的加载类。

话虽如此,让类具有完全访问权限的简单而危险的方法是调用..

System.setSecurityManager(null);

..在applet init()的早期阶段。这将在沙盒子小程序中失败,但可以在受信任的小程序中运行。

实现所需结果的更好(更安全)的方法是实现自定义安全管理器 - 仅提供来自服务器的代码的提升权限。

实施安全管理器可能看起来令人生畏,但很容易做出微不足道的事情。有关示例,请参阅comp.lang.java.programming中System.ext()线程的回复。