2012-03-16 22 views
39

Podczas pracy nad innym problemem (związanym z RMI), zaktualizowałem "folder bezpieczeństwa" systemu za pomocą plików zasad "nieograniczonej siły", a teraz moja aplikacja zawodzi w inny sposób. Dostaję długi zrzut stosu, z którego odnoszą się następujące bity:java.lang.SecurityException: Pliki zasad jurysdykcji nie są podpisane przez zaufanego sygnatariusza

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? Jedyna zmiana polegała na tym, że odłożyłem na bok orignal jar files i dodałem te nieograniczone w $ JAVA_HOME/lib/security. Ten katalog wygląda teraz następująco:

$ 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 

Oczywiście dostępne są wersje .strong i .unlimited, dzięki czemu mogę szybko się przełączać.

Wskazówki były krótkie i proste, a wydaje się, że TYLKO przewidują zastąpienie tych dwóch plików (local_policy.jar i US_exportpolicy.jar).

Co jeszcze można zrobić?

Należy zauważyć, że wersje java i pliki strategii są jak dotąd najmłodsze: odpowiednio 1.7.0_03 i jce_policy-6.

P.S. Artykuł o podobnym tytule, znaleziony pod numerem here, nie był wcale pomocny.

+0

Zapoznaj się z [Jak zainstalować pliki strategii Java Cryptography Extension (JCE) o nieograniczonej sile] (http://opensourceforgeeks.blogspot.in/2014/09/how-to-install-java-cryptography.html) –

Odpowiedz

47

Zamiast mieszania wersje uruchomieniowe i plik zasad, należy użyć the policy files for Java 7.

+0

Oh My Friggen Gawd, I Sure TRIED, aby uzyskać najnowsze i denerwowało mnie, że znalazłem tylko v 6. Podjąłem kilka prób, aby upewnić się, że mam najnowszy. Jak, u diabła, tęskniłem za tym i go znalazłeś?! @ ?! No cóż, powiem to Oracle, nie mając najbardziej przejrzystej strony do pobrania! -wink! - Jeszcze raz dziękuję. –

+2

Albo - ciężko - westchnienie - prawdziwa culpret działa za późno: już pobrałem właściwy, ale zainstalowałem niewłaściwy! - Cholera ... No cóż, nie powinienem pracować tak długo, jak sądzę. –

+0

Otrzymuję ten sam błąd nawet po wymianie Jars w moim JRE .. Mam JRE 1.7.32 działa w mojej Websphere. Wykonałem te kroki. ** http: //www-01.ibm.com/support/docview.wss? uid = swg21635319 ** kiedy użyłem słoików "Nieograniczone pliki zasad JCE dla Javy dla wersji 5.0 SR16, Java 6 SR13, Java 7 SR4 i nowszych wersje ", dostaję Powodowany przez: ** Java.lang.SecurityException: Pliki zasad jurysdykcji nie są podpisane przez zaufanych sygnatariuszy! ** Nawet po wymianie słoików. Jestem pewien, że istnieje problem z sygnatariuszami bezpieczeństwa.Czy ktoś może proszę dać mi znać obejście tego? – bks4line

4

To może się zdarzyć, jeśli istnieją standardowe pliki jar polityka gdzieś w ścieżce klasy. Proponuję znaleźć i zastąpić wszystkie pliki local_policy.jar i us_export_policy.jar nieograniczonymi wersjami tych słoików w twoim komputerze. Jeśli używasz serwera WAS/Portal Server/RAD IBM, tutaj znajduje się link do nieograniczonej zasady JCE jars.

+0

Musiałem pobrać niepowiązane pliki strategii JCE SDK dla starszych wersji https://www-01.ibm.com/marketing/iwm/iwm/web/reg/download.do?source=jcesdk&lang=en_US&S_PKG=13_01&cp=UTF- 8 http://www-01.ibm.com/support/docview.wss?uid=swg21635319 –

3

Możliwe, że masz różne wersje JDK. Na przykład, jeśli twój JAVA_HOME wskazuje na wersję 7, ale w twojej ścieżce wersja 6 pojawia się przed wersją 7, ten błąd może się pojawić.

+1

To była dobra wskazówka. Mój JAVA_HOME nie był nawet ustawiony, a jak tylko go ustawię, ten błąd zniknął. Dziękuję, przeczytałem tutaj, ponieważ najlepsza odpowiedź jest znacznie bardziej zaangażowana i prawdopodobnie nie rozwiązałaby problemu dla mnie. – Dan