web-dev-qa-db-fra.com

Comment installer des fichiers de stratégie juridictionnelle de force illimitée?

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)
4
milnicola

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 * nix

Vous 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());
  }
}
6
Andy

Mise à jour 2018-01-15

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.

Réponse originale

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'appel Security.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 le crypto.policy sur une valeur de unlimited. Reportez-vous aux notes du fichier Java.security fourni avec cette version pour plus d'informations.

17
Marcin Kłopotek

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).

1
ejoftheweb

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
  }
}
0
Nizar Ahmed

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 

0
Moshe Edri