2012-03-16 5 views
39

Quando si lavora su un altro problema (correlato a RMI), ho aggiornato la "cartella di sicurezza" del sistema con i file di criteri "forza illimitata" e ora la mia applicazione fallisce in un modo diverso. Ricevo un dump di stack lungo, di cui i seguenti bit appaiono pertinenti:java.lang.SecurityException: i file dei criteri di giurisdizione non sono firmati da un firmatario attendibile

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? L'UNICA modifica era che spostavo da parte i file jar originali e aggiungevo quelli illimitati in $ JAVA_HOME/lib/security. Quella directory ora assomiglia a questo:

$ 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 

Naturalmente, la .strong e la versione .unlimited ci sono così posso tornare in fretta.

Le indicazioni erano brevi e chiare e sembra che SOLO prevedano la sostituzione di questi due file (local_policy.jar e US_exportpolicy.jar).

Cos'altro c'è da fare?

Si noti che le versioni di java e dei file di criteri sono le più recenti finora: 1.7.0_03 e jce_policy-6, rispettivamente.

P.S. L'articolo di titolo simile, trovato here, non era di alcun aiuto.

+0

Check out [Come installare i file di criteri di giurisdizione illimitata su Java Cryptography Extension (JCE)] (http://opensourceforgeeks.blogspot.in/2014/09/how-to-install-java-cryptography.html) –

risposta

47

Invece di mescolare le versioni runtime di file e la politica, è necessario utilizzare the policy files for Java 7.

+0

Oh Il mio Friggen Gawd, sono sicuro di aver cercato di ottenere il massimo ed ero seccato di aver trovato solo v 6. Ho fatto diversi tentativi per essere sicuro di aver ottenuto l'ultimo. Come diamine mi è mancato e lo trovi?! @ ?! Oh bene, lo darò a Oracle non avendo il sito di download più chiaro! -wink! - Grazie ancora. –

+2

Oppure, -serie-sigh- il vero culpret funziona troppo tardi: avevo già scaricato quello giusto, ma ho installato quello sbagliato! -gracciglia- Oh beh, non dovrei lavorare così lunghe ore, lo suppongo. –

+0

Sto ricevendo lo stesso errore anche dopo aver sostituito i Jars nel mio JRE .. Ho JRE 1.7.32 in esecuzione nel mio Websphere. Ho seguito questi passaggi. ** http: //www-01.ibm.com/support/docview.wss? uid = swg21635319 ** quando ho usato i vasi "File SDK JCE senza restrizioni per Java 5.0 SR16, Java 6 SR13, Java 7 SR4 e versioni successive versioni ", ottengo Causato da: ** Java.lang.SecurityException: i file delle politiche di giurisdizione non sono firmati da firmatari fidati! ** Anche dopo aver sostituito i vasi. Sono sicuro che c'è qualche problema con i firmatari di sicurezza.Qualcuno può per favore fammi sapere la soluzione per questo? – bks4line

14

Questo accade quando la versione di Java non corrisponde con la versione di file dei criteri. È possibile scaricare i file delle politiche rilevanti dai seguenti collegamenti.

Policy jars for Java 8
Policy jars for Java 7
Policy jars for Java 6

+0

L'installazione successiva a 'README.txt' nel download non ha alcun effetto per OpenJDK 1.8.0_111 su Ubuntu 16.10. –

4

questo potrebbe accadere se ci sono file jar tipo di assicurazione da qualche parte nel percorso di classe. Suggerisco di trovare e sostituire tutti i file local_policy.jar e us_export_policy.jar con le versioni illimitate di questi vasi nella vostra macchina. Se si utilizza WAS/Portal Server/RAD di IBM, ecco il collegamento al criterio JCE illimitato jars.

+0

Ho dovuto scaricare i file di politica JCE SDK senza restrizione per le versioni precedenti 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

È possibile che si dispongano di versioni diverse di JDK. Ad esempio se il tuo JAVA_HOME punta alla versione 7, ma nel tuo percorso la versione 6 compare prima della versione 7, questo errore potrebbe apparire.

+1

Questo è stato un buon consiglio. Il mio JAVA_HOME non era nemmeno impostato e, non appena l'ho impostato, questo errore è andato via. Fortunatamente ho letto qui, perché la risposta più alta è molto più coinvolgente e probabilmente non avrebbe risolto il problema per me. – Dan

Problemi correlati