2

我正在使用 JRE7。我已经使用 jarsigner 对 jar 文件进行了签名。但我仍然得到例外

java.security.AccessControlException: access denied ("java.io.FilePermission" 
    "C:\Program Files\Java\jre7\lib\ext\Cert.P12" "read") 

我正在尝试读取存储在该目录中的 Cert.P12。

我使用 keytool 生成了证书并签署了 jar。当浏览器提示我时,我接受了证书。是不是因为它不是真正的证书我收到此错误?

这个读取文件的代码是一个小程序代码。

http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html提到如果它被签名,错误就会消失。但它不适合我。

4

3 回答 3

1

这是权限问题,我认为这与它是否是或不是真正的证书无关(我不知道)。您的证书保存在C:\Program Files...。确保您read在该目录中具有权限。Windows 家长控制可能会阻止您访问证书文件。

为了您自己的安全,有时 Windows 会阻止应用程序访问C:\Program Files\...文件夹,并且需要Administrator权限才能访问它们。也许,您必须在服务器中为您的 JRE 设置管理员权限,以管理员身份运行它。

于 2013-05-16T14:37:41.790 回答
0

您是否授予了您申请的签名的权限?签名本身对 Java 的安全管理器没有任何意义。您还需要一个有效的证书来验证签名,并且它需要被系统“信任”......

于 2013-05-16T14:36:23.783 回答
0

如果,即使在签署小程序之后,您仍然收到 SecurityException,请尝试将代码作为特权代码运行:

AccessController.doPrivileged(new PrivilegedAction() {
    public Object run() {
        // perform the security-sensitive operation here
        return null;
    }
});
于 2013-05-17T06:09:16.243 回答