1

我也搜索了很多链接,例如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

它在本地机器上完美运行。但是当通过 HTTP(S) 像小程序一样使用 SignedJar.jar 时,即使用户接受证书(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)

是的,它尝试从插入终端的智能卡中读取数据,并在调用连接时出现异常。

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

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

但没有运气。那么问题在哪里呢?

在此先感谢,基里尔

4

2 回答 2

0

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

于 2013-01-15T16:28:52.810 回答
0

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

这是命令行:

$ jar -tf SignedApplet.jar

链接

于 2014-08-15T14:20:19.987 回答