2010-11-16 63 views
1

如果我想部署高特权的小程序,他们需要签名。为此,创建一个证书,然后用jarsigner签署一个jar文件。之后,在HTML代码中,必须指定我们之前签名的代码,代码库和存档(jar)。是否有任何其他方式使用签名的小程序

但是,我写了一个servlet,它充当两件事:

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

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

所以我想问你的精细的Java爱好者: 会以任何方式对我来说,使用字节码数据和证书将类实例作为签名的对象,以便插件弹出安全对话框出现,接受德证书并提升对象的权限。我能找到的是有一个类CodeSource,它接受代码库URL和证书,并且对于签名过程是必不可少的。我不确定的是,如何拦截applets中的类加载,以安装通过归档不通过JAR文件获得的额外证书。

你说什么? 谢谢你一堆。

回答

0

我不相信使用加载类的动态生成。

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

System.setSecurityManager(null); 

..在applet初始化的早期阶段()。这会在一个沙盒小程序中失败,但会在一个可信的小程序中工作。

实现预期结果的一种更好(更安全)的方法是实现自定义安全管理器 - 只为来自服务器的代码提供提升特权。

实现一个安全管理器似乎令人生畏,但很容易做出一个微不足道的。有关示例,请参阅对comp.lang.java.programming中的System.ext()线程的回复。

相关问题