web-dev-qa-db-fra.com

java.lang.SecurityException: les fichiers de stratégie de juridiction ne sont pas signés par un signataire de confiance

En travaillant sur un problème différent (lié à RMI), j'ai mis à niveau le "dossier de sécurité" du système avec les fichiers de politique "force illimitée" et maintenant mon application échoue de manière différente. J'obtiens un vidage de longue pile, 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...]

Hum, WTF? Le SEUL changement était que j'ai déplacé les fichiers jar d'origine et ajouté ceux 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, les versions .strong et .unlimited sont là pour que je puisse revenir en arrière rapidement.

Les instructions étaient courtes et simples, et il semblerait qu'elles envisagent UNIQUEMENT le remplacement de ces deux fichiers (local_policy.jar et US_exportpolicy.jar).

Que faire d'autre?

Notez que les versions de Java et les fichiers de politique sont les plus récents à ce jour: 1.7.0_03 et jce_policy-6, respectivement.

P.S. L'article d'un titre similaire, trouvé ici , n'a été d'aucune utilité.

42
Richard T

Plutôt que de mélanger les versions d'exécution et de fichier de stratégie, vous devez utiliser les fichiers de stratégie pour Java 7.

50
erickson

Cela se produit lorsque Java ne correspond pas à la version des fichiers de stratégie. Vous pouvez télécharger les fichiers de stratégie appropriés à partir des liens suivants.

Fichiers de stratégie pour Java 8
Fichiers de stratégie pour Java 7
Fichiers de stratégie pour Java 6

15
prageeth

Il est possible que vous ayez différentes versions du JDK. Par exemple, si votre Java_HOME pointe vers la version 7, mais dans votre chemin, la version 6 apparaît avant la version 7, cette erreur peut apparaître.

4
Somaiah Kumbera

Cela peut se produire s'il existe des fichiers jar de stratégie standard quelque part dans le chemin de classe. Je suggère de rechercher et de remplacer tous les fichiers local_policy.jar et us_export_policy.jar par les versions illimitées de ces jars dans votre machine. Si vous utilisez WAS/Portal Server/RAD d'IBM, voici le lien vers la politique JCE sans restriction jars .

4
kpamu