我正在使用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。当浏览器提示我时,我接受了证书。是因为它不是真正的证书我收到这个错误吗?
这个读取文件的代码是一个applet代码。
http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html提到如果签名,错误就会消失。但它不适合我。
答案 0 :(得分:1)
这是权限问题,我认为它不是关于它是否或它不是真正的证书(我不知道)。您的证书保存在C:\Program Files...
。确保您在该目录中拥有read
权限。 Windows家长控制可能阻止您访问证书文件。
为了您自己的安全,有时Windows阻止应用程序访问C:\Program Files\...
文件夹,并且需要Administrator
权限才能访问它们。也许,您必须在服务器中为您的JRE设置管理员权限,以管理员身份运行它。
答案 1 :(得分:0)
您是否批准了您申请的签名?签名本身对Java的安全管理器没有任何意义。您还需要一个有效的证书来验证签名,它需要被系统“信任”......
答案 2 :(得分:0)
如果,即使在签署applet之后,仍然会收到SecurityException,请尝试将代码作为特权代码运行:
AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
// perform the security-sensitive operation here
return null;
}
});