java.lang.SecurityException: файлы политики юрисдикции не подписаны доверенным подписывающим лицом - PullRequest
41 голосов
/ 17 марта 2012

Работая над другой проблемой (связанной с RMI), я обновил системную «папку безопасности» с помощью файлов политики «неограниченная сила», и теперь мое приложение перестало работать по-другому. Я получаю длинный дамп стека, из которого уместны следующие биты:

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

Хм, WTF? ЕДИНСТВЕННОЕ изменение заключалось в том, что я отодвинул оригинальные файлы jar и добавил неограниченные в $ JAVA_HOME / lib / security. Этот каталог теперь выглядит так:

$ 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

Конечно, есть версии .strong и .unlimited, поэтому я могу быстро переключиться обратно.

Направления были короткими и простыми, и, похоже, они ТОЛЬКО предусматривают замену этих двух файлов (local_policy.jar и US_exportpolicy.jar).

Что еще можно сделать?

Обратите внимание, что версии java и файлы политики являются самыми младшими на сегодняшний день: 1.7.0_03 и jce_policy-6, соответственно.

P.S. Статья с похожим названием, найденная здесь , вообще не помогла.

Ответы [ 4 ]

49 голосов
/ 17 марта 2012

Вместо того, чтобы смешивать версии файлов времени выполнения и политики, вы должны использовать файлы политики для Java 7.

15 голосов
/ 17 июля 2013

Это происходит, когда версия Java не совпадает с версией файлов политики. Вы можете скачать соответствующие файлы политики по следующим ссылкам.

jar политики для Java 8
jar политики для Java 7
Policy jar для Java 6

4 голосов
/ 21 апреля 2016

Возможно, у вас есть разные версии JDK. Например, если ваш JAVA_HOME указывает на версию 7, но в вашем пути версия 6 отображается до версии 7, эта ошибка может появиться.

4 голосов
/ 16 сентября 2014

Это может произойти, если в пути к классам есть стандартные файлы jar политики. Я предлагаю найти и заменить все файлы local_policy.jar и us_export_policy.jar неограниченными версиями этих jar-файлов на вашем компьютере. Если вы используете IBM WAS / Portal Server / RAD, вот ссылка на неограниченную политику JCE jars .

...