Java.lang.SecurityException: les fichiers de la Politique de la juridiction ne sont pas signés par un signataire de confiance
en travaillant sur un autre problème (lié à RMI), j'ai mis à jour le" dossier de sécurité "du système avec les fichiers de politique" unlimited strength " et maintenant mon application échoue d'une manière différente. Je reçois un long dump stack, dont les bits suivants semblent pertinents:
Exception in thread "main" java.lang.ExceptionInInitializerError
[...crop...]
Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism
at javax.crypto.JceSecurity.<clinit>(JceSecurity.java:86)
... 17 more
Caused by: java.lang.SecurityException: The jurisdiction policy files are not signed by a trusted signer!
[...crop...]
Um, WTF? Le seul changement est que j'ai déplacé les fichiers JAR orignal de côté et ajouté les illimités dans $JAVA_HOME/lib/security. Ce répertoire ressemble maintenant à ceci:
$ ls
blacklist javaws.policy trusted.libraries
cacerts local_policy.jar US_export_policy.jar
java.policy local_policy.jar.strong US_export_policy.jar.strong
java.security local_policy.jar.unlimited US_export_policy.jar.unlimited
bien sûr, l' .fort .les versions illimitées sont là pour que je puisse revenir rapidement.
les directions étaient courtes et simples, et il semblerait qu'ils n'envisagent que le remplacement de ces deux fichiers (local_policy.jar and US_exportpolicy.pot.)
Qu'y a-t-il d'autre à faire?
notez que les versions de java et les fichiers de politique sont les plus jeunes à ce jour: 1.7.0_03, et jce_policy-6, respectivement.
P. S. L'article du même titre, trouvé ici , n'a été d'aucune aide du tout.
4 réponses
plutôt que de mélanger les versions d'exécution et de fichier de politique, vous devriez utiliser les fichiers de politique pour Java 7.
cela se produit lorsque la version Java ne correspond pas à la version des fichiers de politique. Vous pouvez télécharger les fichiers de politique pertinents à partir des liens suivants.
Politique de pots pour Java 8
la Politique de pots pour Java 7
la Politique de pots pour Java 6
cela pourrait se produire s'il y a des fichiers jar standard de la Politique quelque part dans classpath. Je suggère de trouver et de remplacer toute la Politique local_policy.jar et us_export_policy.les fichiers jar avec les versions illimitées de ces pots dans votre machine. Si vous utilisez le serveur WAS/Portal/RAD D'IBM, voici le lien vers la Politique sans restriction de JCE jars .
il est possible que vous ayez différentes versions du JDK. Par exemple, si votre JAVA_HOME pointe vers la version 7, mais que dans votre chemin la version 6 apparaît avant la version 7, cette erreur pourrait apparaître.