自签名小程序无法获得完整权限

时间:2012-01-16 15:31:53

标签: java security permissions applet accesscontrolexception

我搜索过很多链接,例如oraclevelocity review以及stackoverlow,但仍然没有成功。

重点很简单。 Jar使用以下方式签名:

keytool -genkey -alias signFiles -keystore compstore -keypass bca321 -dname "cn=test" -storepass abc123
jarsigner -keystore compstore -storepass abc123 -keypass bca321 -signedjar SignedJar.jar UnsignedJar.jar signFiles

它在本地机器上运行完美。但是当SignedJar.jar被用作applet的HTTP(S)时,即使用户接受证书(IE或FF或Chrome - 没有区别),它也会停止使用:

java.security.AccessControlException: access denied (javax.smartcardio.CardPermission Broadcom Corp Contacted SmartCard 0 connect)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)

是的,它试图从插入终端的智能卡中读取,并在调用connect时获得异常。

是的,我也试过这种方法:

AccessController.doPrivileged(new PrivilegedAction() {
...

但没有运气。那捕获的地方在哪里?

提前致谢, 基里尔

2 个答案:

答案 0 :(得分:0)

我今天遇到了这个问题,java 1.7.0_11,applet jars用自签名证书签名添加到可信证书列表中。当我删除我的策略文件中授予applet的代码库所有权限的部分时,它就消失了。

答案 1 :(得分:0)

创建公钥/私钥后,创建关联证书并使用证书签署哪个applet jar,您应该为JAR中的每个文件创建一个哈希,并使用私钥对其进行签名。必须将这些哈希,公钥和证书与JAR清单一起添加到JAR文件的META-INF目录中。

这是命令行:

$ jar -tf SignedApplet.jar

请参阅link