2013-05-16 5 views
1

J'utilise JRE7. J'ai signé le fichier jar en utilisant jarsigner. Mais je reçois toujours l'exceptionAccessControlException: accès refusé - FilePermission

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

J'essaie de lire le Cert.P12 stocké dans ce répertoire.

J'ai généré un certificat en utilisant keytool et signé le pot. Lorsque le navigateur m'a invité, j'ai accepté le certificat. Est-ce parce que ce n'est pas un vrai certificat que j'obtiens cette erreur?

Ce code pour lire le fichier est un code applet.

http://www-personal.umich.edu/~lsiden/tutorials/signed-applet/signed-applet.html mentionne que si elle est signée, l'erreur disparaîtra. Mais ce n'était pas pour moi.

+0

Il est une applet. J'essaye de charger du navigateur. – Satish

Répondre

0

Si, même après la signature de l'applet, vous obtenez toujours un SecurityException, essayez d'exécuter le code comme privilégié:

AccessController.doPrivileged(new PrivilegedAction() { 
    public Object run() { 
     // perform the security-sensitive operation here 
     return null; 
    } 
}); 
+0

c'est vrai mais apporter un autre problème - générer une classe interne en bytecode puis apllet java.lang.SecurityException: les informations de signataire de la classe "Main $ 1" ne correspondent pas aux informations des autres classes du même package' le problème existe après: 'jar cvf Main.jar Main.class Main $ 1.class; jarsigner Main.jar certalias' –

0

Avez-vous accordé la permission à la signature que vous avez appliquée? Une signature en elle-même ne signifie rien pour le responsable de la sécurité de Java. Vous aurez également besoin d'un certificat valide pour valider la signature, et il doit être "approuvé" par le système ...

+0

J'ai la fenêtre "as-tu confiance pour courir". J'ai cliqué sur "Exécuter". Cela équivaut à faire confiance au certificat, je crois. Ai-je tort? – Satish

+0

* "Je me trompe?" * Non, votre compréhension est correcte. Lorsque vous cliquez sur 'OK/Exécuter', l'applet devrait avoir toutes les permissions qu'il obtiendra. –

1

C'est un problème de permissions, je pense que ce n'est pas à propos de si c'est le cas ou ce n'est pas un vrai certificat (je ne sais pas). Votre certificat est enregistré au C:\Program Files.... Assurez-vous que vous avez read autorisations dans ce répertoire. Le contrôle parental Windows bloque probablement votre accès au fichier de certificat. Pour votre propre sécurité, Windows bloque parfois l'accès des applications aux dossiers C:\Program Files\... et nécessite l'accès aux privilèges Administrator. Peut-être, vous devez définir des privilèges d'administrateur à votre JRE dans votre serveur, en l'exécutant en tant qu'administrateur.

+0

J'ai été porté sur C: \ temp \ Cert.P12. Il a donné la même erreur – Satish

+0

@Satish Avez-vous essayé d'exécuter votre JRE en tant qu'administrateur? – DaGLiMiOuX

+0

Je n'ai pas essayé mais quand déployé dans Internet je ne peux pas m'attendre à des utilisateurs pour exécuter JRE en tant qu'administrateur. Donc, même si cela fonctionne, cela n'aide pas. – Satish