Подтвердить что ты не робот

Предупреждение о разрешении при запуске апплета с JRE 7u45

Я только что обновил JRE до 7u45, и мой апплет получил сообщение об ошибке при запуске, сказав: Это приложение будет заблокировано в будущем обновлении безопасности Java, потому что манифест JAR файла не содержит атрибута Permissions. "Затем я добавил следующие два атрибута в манифест моего файла JAR-апплета (self-signed):

Permissions: all-permissions
Codebase: *

Однако предупреждение не исчезло. Я сомневаюсь, что я пропустил некоторые другие вещи, но не могу найти их после нескольких часов исследований. Кто-нибудь еще знает решение?

Обновление

Надежный апплет, подписанный с действующим сертификатом, также не может работать. Желтое предупреждающее сообщение не отображается, но отображается другое диалоговое окно с сообщением о том, что апплет заблокирован настройками безопасности, а изменение уровня безопасности или что-то еще в панели управления Java не помогает.

4b9b3361

Ответ 1

У меня та же проблема. Я тестирую его с явной базой кода, но предупреждение "Отсутствует атрибут манифеста разрешений" продолжает отображаться.

Также попытался изменить разрешения на "песочницу", сообщение все еще появляется, но апплет не имеет прав для выполнения некоторых функций.

Edit:

Наконец, я нашел решение: manifest.mf

Manifest-Version: 1.0
Codebase: *
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Application-Name: AppName
Created-By: AppCreator

Надеюсь, это поможет вам.

Ответ 2


 Я также столкнулся с этой проблемой, и я решил эту проблему в своем приложении, просто добавив сертификат в "Защищенный сайт" в центре управления java.

Сообщение об ошибке ( "Приложение будет заблокировано... Атрибут разрешений" ) настолько вводит в заблуждение, и оно больше похоже на общее сообщение об ошибке и не имеет ничего общего с атрибутом Permissions, реально присутствующим в баночках или нет. Это для меня ошибка, и, надеюсь, Java будет исправлять ее в следующей версии.

Точные шаги для удаления этого сообщения об ошибке:
1) javaws -viewer
2) Открыть вкладку "Безопасность"
3) Clik на "Управление сертификатами"
4) Выберите тип сертификата как "Безопасный сайт"
5) Добавьте сертификат приложения.

Ответ 3

Проведя некоторое время, разбирая мою голову на манифесте редактирования (см., как настроить манифест с maven) и все эти java-конфигурации, я нашел, как это работает:

Чтобы предоставить allPermissions с java 1.7+, вам нужно отредактировать файл java.policy.

Для этого используйте policytool. В командной строке командной строки:

policytool

см. учебник Oracle: http://docs.oracle.com/javase/tutorial/security/tour1/wstep2.html

Откройте правильный файл политики, в котором выполняется ваш браузер vm. Для меня это в:

C:\Program Files (x86)\Java\jre7\lib\security\java.policy

Должен загружать некоторый список CodeBase. Нажмите на него для редактирования или:

Добавить запись

Оставьте CodBase пустое место для каждого места, где выполняется код, но вы можете поместить localhost или stite, если хотите, и signedBy для не подписанных баннеров/апплетов.  Нажмите "Добавить разрешение", затем выберите "AllPermissions".
У меня CodeBase <ALL> и java.security.AllPermission

Затем сохранить! java.policy и должен получить сообщение sucess.

Готово вы можете запускать не подписанные апплеты и файлы с файлами acess.

Ответ 4

На панели управления Java измените уровень безопасности на "Очень высокий", таким образом он заблокирует запуск апплета, потому что ему не нужен атрибут Permissions. Запустите приложение, будет выбрано исключение, которое сообщит вам, какой jar отсутствует атрибут.

У меня создалось впечатление, что добавить атрибут Permissions в основную банку апплета было бы достаточно, но я только выяснил, что даже вспомогательная банка может вызвать проблему. Теперь я добавлю атрибут Permissions ко всем моим банкам.

Надеюсь, это поможет кому-то.

Ответ 5

Добавьте базовый url в список защищенных сайтов (исключенных из проверки) на вкладке безопасности панели управления Java, что снова запустило мой запуск vpn:

Screenshot of the dialog (it's in German, sorry!)

Ответ 6

Из Новые требования безопасности для RIA в 7u51 (январь 2014 г.) в разделе "Группа Java Platform, блог управления продуктом":

Начиная с 7u51, (14 января 2014 года), ваши RIA должны быть обновлены. [...]

RIA должны содержать две вещи:

  • Подписи кодов от доверенного органа. [...]

Итак, похоже, что использование самозаверяющего сертификата является проблемой здесь.

Я думаю, что ясно, что самозаверяющий сертификат мало используется в качестве введения для конечного пользователя.

Ответ 7

Я не знаю, что мой оригинальный ответ (удаленный) был неправильным. Атрибут Permissions в манифесте не должен игнорироваться в локальном апплете, так что это ошибка.

Аналогичные известные проблемы описаны в примечаниях к выпуску 7u45. Это должно быть связано.

Что касается исходного вопроса: Codebase: *?

Codebase: localhost

Он работает для http://localhost и не противоречит file://localhost/C:/folder, который (в Windows) является правильным синтаксисом JNLP-кода. Атрибут Codebase в манифесте допускает несколько записей. Добавление localhost, несомненно, не будет иметь побочных эффектов.

Update:

Manifest-Version: 1.0
Implementation-Title: MyApplet
Implementation-Version: applet build
Built-By: bnicer
Application-Name: Slide Show
Created-By: 1.7.0_45-b18 (Oracle Corporation)
Caller-Allowable-Codebase: *
Implementation-Vendor: MyFirm
Ant-Version: Apache Ant 1.9.2
Trusted-Library: true
Application-Library-Allowable-Codebase: *
Built-On: 8 November, 2013 @ 13:40:10 GMT
Trusted-Only: true
Permissions: all-permissions
Main-Class: jtss
Codebase: www.mydomain.co.uk localhost 127.0.0.1 192.168.2.2

Я считаю, что запуск апплета в автономном режиме под 7u45 будет создавать проблемы независимо от того, что вы положили в манифест, и это очень неудачно.

Насколько я могу судить, более старый метод добавления файла .java.policy в локальный каталог так же бессмысленен, и это тоже неудачно.

Дополнительная информация:

(Что касается ошибки?)

Если апплет подписан, у вас есть возможность импортировать открытый сертификат (.csr,.p12,.cer) в панели управления Java: Security > Manage Certificates > User > Signer CA. Импорт сертификата в прошлом гарантировал: A) издатель апплетов был известен. B) всплывающее окно безопасности перед запуском апплета в браузере будет удалено.

  • Приложения веб-запуска, то же самое.

Разница в том, что теперь (7u45): A) издатель известен. B) вы получаете предупреждение "... манифест не содержит атрибут разрешений".

  • Только локальные апплеты.

После предупреждения было моим опытом, что апплет не будет работать.

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at sun.plugin2.applet.Plugin2ClassLoader.defineClassHelper(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.access$100(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    ... 14 more
Caused by: java.lang.NullPointerException
    at sun.plugin2.applet.Plugin2ClassLoader.loadAllowedCodebases(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.getPermissions(Unknown Source)
    at sun.plugin2.applet.Applet2ClassLoader.getPermissions(Unknown Source)
    at java.security.SecureClassLoader.getProtectionDomain(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    ... 18 more

Обход, но отнюдь не исправление, заключается в удалении сертификата из хранилища Signer CA. При удалении сертификата (в отчаянии, в крайнем случае) подписанный локальный апплет выполняется следующим образом: A) UNKNOWN Publisher и т.д. B) вы получаете диалоговое окно безопасности и предупреждение об отсутствующих атрибутах разрешений.

  • Ни одно из вышеизложенного не относится к апплетам в Интернете.

Не стесняйтесь комментировать.

Ответ 8

В версии 1.7.0_u45 вам, вероятно, потребуется установить оба атрибута Permissions и Caller-Allowable-Codebase:

Caller-Allowable-Codebase: * localhost 127.0.0.1
Permissions: all-permissions

см. эту диаграмму, которая объясняет всплывающие окна безопасности

Я устанавливаю свои атрибуты манифеста следующим образом:

Application-Name: MyAppName
Implementation-version: %VERSION% 
Permissions: all-permissions
Caller-Allowable-Codebase: * localhost 127.0.0.1
Application-Library-Allowable-Codebase: *

Ответ 9

Если вы используете webstart с протоколом на основе версии, похоже, ошибка связана с тем, что предупреждает атрибут Permissions, когда это не должно. Как только мы удалили атрибуты версии из нашего jnlp и удалили строку версии из имени файла jar, предупреждение атрибута Permissions удалилось.

Изменить: Я нашел этот форум, который обсуждает вопрос: https://forums.oracle.com/thread/2594060.

Ответ 11

У меня была такая же ошибка при попытке открыть виртуальную консоль Dell iDRAC. Это не поможет, если вы хотите правильно избавиться от предупреждений. Но если вы хотите просто запустить приложение, то для меня было решение открыть панель управления Java, а на вкладке "Безопасность" установить уровень безопасности на "средний".

После этого я смог запустить приложение после принятия предупреждений.

Ответ 12

Я поместил свою Java-защиту на Medium и теперь могу получить доступ к программе.