Quelqu'un peut-il m'expliquer comment installer des fichiers de stratégie juridictionnelle de force illimitée? J'ai téléchargé les fichiers .jar à partir de Site Web Oracle mais je ne parviens pas à les installer. Le programme Java que je crée continue de me donner cette erreur:
Jan 11, 2017 12:32:31 AM com.subgraph.orchid.TorClient start
INFO: Starting Orchid (version: 1.0.0)
Jan 11, 2017 12:32:31 AM com.subgraph.orchid.TorClient verifyUnlimitedStrengthPolicyInstalled
SEVERE: Unlimited Strength Jurisdiction Policy Files are required but not installed.
Exception in thread "main" com.subgraph.orchid.TorException: Unlimited Strength Jurisdiction Policy Files are required but not installed.
at com.subgraph.orchid.TorClient.verifyUnlimitedStrengthPolicyInstalled(TorClient.Java:208)
at com.subgraph.orchid.TorClient.start(TorClient.Java:79)
at com.nikola.WebCrawlerApp.App$OrchidDemo.startOrchid(App.Java:46)
at com.nikola.WebCrawlerApp.App$OrchidDemo.access$000(App.Java:38)
at com.nikola.WebCrawlerApp.App.main(App.Java:35)
at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
at Java.lang.reflect.Method.invoke(Method.Java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:147)
Vous devez déterminer votre chemin de base Java (soit via System.getenv("Java_HOME")
à partir de Java, soit à l'aide de $ echo $Java_HOME
sur la ligne de commande). Ce devrait être un chemin comme celui-ci:
C:\Program Files\Java\jre8
sous Windows/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home
sur Mac OS X/usr/Java/jdk1.8.0_101/bin/Java
sur * nixVous devez ensuite copier les fichiers US_export_policy.jar
et local_policy.jar
que vous avez téléchargés dans le répertoire: <Java_HOME>/jre/lib/security
et écraser les fichiers existants du même nom.
Mise à jour le 17/05/17
Le code suivant (à des fins de démonstration uniquement) indiquera à la JVM qu'il est autorisé à utiliser le chiffrement AES-256 bits et les chiffrements TLS correspondants, quels que soient les fichiers de stratégie installés. Il est non recommandé d'utiliser cette méthode.
if (Cipher.getMaxAllowedKeyLength("AES") < 256) {
try {
Field field = Class.forName("javax.crypto.JceSecurity").
getDeclaredField("isRestricted");
field.setAccessible(true);
field.set(null, Java.lang.Boolean.FALSE);
} catch (Exception e) {
fail("Could not override JCE cryptography strength policy setting");
fail(e.getMessage());
}
}
Selon JDK-8170157 , puisque JDK 6u181, 7u171, 8u161, 9b148 , la politique cryptographique illimitée est activée par défaut. Il suffit donc de passer à la version de base correspondante.
Depuis Java 9 et Java 8u151 , il n'est plus nécessaire de télécharger et d'installer manuellement les fichiers de règles de juridiction. Selon notes de publication :
Dans les versions précédentes, les fichiers JCE juridiction devaient être téléchargés et installés séparément pour permettre à la cryptographie illimitée d'être utilisée par JDK. Les étapes de téléchargement et d'installation ne sont plus nécessaires. Pour activer la cryptographie illimitée, vous pouvez utiliser la nouvelle propriété
crypto.policy
Security. Si cette nouvelle propriété de sécurité est définie dans le fichier Java.security, ou a été définie de manière dynamique à l'aide de l'appelSecurity.setProperty()
avant l'initialisation de la structure JCE, ce paramètre sera honoré. Par défaut, la propriété sera indéfinie. Si la propriété n'est pas définie et que les fichiers JCE juridictionnels existants n'existent pas dans le répertoire hérité lib/security, le niveau cryptographique par défaut restera limité. Pour configurer le JDK afin qu'il utilise la cryptographie illimitée, définissez lecrypto.policy
sur une valeur deunlimited
. Reportez-vous aux notes du fichier Java.security fourni avec cette version pour plus d'informations.
Dans $ Java_HOME/jre/lib/security, éditez le fichier Java.security et décommentez la ligne crypto.policy = unlimited (il s'agit d'environ 823 lignes sur un fichier de 932 lignes).
Pour gérer cela par programme, le code suivant dans Scala vous aidera à le faire. Le code indiqué ci-dessus ne fonctionnera pas pour Java version 8. Vous obtiendrez une erreur. Erreur: Impossible de définir le champ booléen final statique javax.crypto.JceSecurity.isRestricted to Java.lang. .Booléen
if (Cipher.getMaxAllowedKeyLength("AES") < 256) {
try {
var field=Class.forName("javax.crypto.JceSecurity").getDeclaredField("isRestricted")
field.setAccessible(true)
var modifiersField = classOf[Field].getDeclaredField( "modifiers" )
modifiersField.setAccessible(true);
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
field.set(null, Java.lang.Boolean.FALSE)
}
catch{
case ex:Exception=>throw ex
}
}
j'ai eu le même problème et aucune des réponses ci-dessus n'a fonctionné pour moi, j'ai donc décidé de la partager ici pour aider les autres.
ce qui a finalement bien fonctionné pour moi, c’est tout simplement: téléchargez les fichiers de stratégie juridictionnelle à portée illimitée du site Web Oracle
décompressez le dossier et déplacez les fichiers à l'intérieur du dossier dans $ Java_HOME\jre\lib\security en écrasant les fichiers déjà présents avec le même nom.
remplace Java_HOME par le dossier réel jdk de votre installation Java