Подписанный апплет не загружается

У меня есть простой апплет HelloWorld, я встраиваю его в HTML. Это работало нормально. Но я поместил апплет в банку и подписал банку, но он не загружается, говоря: «Самоподписанные банки не могут поддерживаться». Я подписываю, используя сертификат, выданный ICA. Более того, мы никогда не сталкивались с этой проблемой до версии 1.7.51. Кстати: я просмотрел документацию Oracle по добавлению параметров

В соответствии с этим я попытался добавить следующие атрибуты в подписанный MANIFEST.MF, а именно: Разрешения: песочница, Trusted-Library: true, но это также не помогло. Я не уверен, что что-то упускаю.

Манифест выглядит так:

Manifest-Version: 1.0
Trusted-Library: true
Permissions: all-permissions
Application-Library-Allowable-Codebase: *
Caller-Allowable-Codebase: *
Codebase: *

Created-By: 1.7.0_45 (Oracle Corporation)

Name: HelloWorld$1.class
SHA1-Digest: xcxzcbxzcbxzcbxzcb=

Name: HelloWorld.class
SHA1-Digest: xaadfasfdasdfsafd=

Добавление журналов консоли:

com.sun.deploy.security.BlockedException: Your security settings have blocked a self-signed application from running
    at com.sun.deploy.security.SandboxSecurity.showBlockedDialog(Unknown Source)
    at com.sun.deploy.security.TrustDecider.askUser(Unknown Source)
    at com.sun.deploy.security.TrustDecider.validateChain(Unknown Source)
    at com.sun.deploy.security.TrustDecider.isAllPermissionGranted(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.isTrustedByTrustDecider(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.getTrustedCodeSources(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.strategy(Unknown Source)
    at com.sun.deploy.security.CPCallbackHandler$ParentCallback.openClassPathElement(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$1000(Unknown Source)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)

введите здесь описание изображенияСпасибо. JE


person java_enthu    schedule 07.05.2014    source источник


Ответы (2)


Запись Trusted-Library актуальна только до версии Java 1.7.45. После этого вам нужно добавить параметры, упомянутые в этом вопросе.

person jan    schedule 07.05.2014
comment
Я прошел по ссылке, и я также обновил манифест. Но все же я вижу, что апплет не загружается. Я обновил файл манифеста в вопросе сейчас! - person java_enthu; 07.05.2014
comment
@java_enthu Пожалуйста, уточните, что именно вы имеете в виду, когда говорите, что не загружаетесь. Можете ли вы загрузить скриншот или вставить исключение из консоли java-апплета? - person jan; 07.05.2014
comment
@java_enthu Какие настройки безопасности вы выбрали в панели управления Java? Вы сказали, что это не самоподписанный сертификат. Попробуйте установить его в доверенных центрах Java и повторите попытку. - person jan; 07.05.2014
comment
Это не самоподписанный сертификат. и безопасность по умолчанию (высокая, рекомендуется минимальная) - person java_enthu; 07.05.2014
comment
@java_enthu Ну, ошибка говорит об этом. Таким образом, независимо от того, подписали ли вы неправильно или купили его, этот корневой ЦС не находится в списке доверенных органов по умолчанию. Вы можете убедиться в этом, скопировав его непосредственно в доверенные. - person jan; 07.05.2014
comment
давайте продолжим это обсуждение в чате - person jan; 07.05.2014

Ну, я нашел решение для этого:

Проверьте следующие три вещи.

1) Certificate has valid chain upto root and CA/ICA are public root.
2) Manifest.MF must have 2 attributes.
  • Кодовая база: ‹ местоположение/имя хоста, на котором вы собираетесь развернуть банку>
  • Разрешения: одно из двух значений (песочница или все разрешения).

Дополнительную информацию см. здесь.

person java_enthu    schedule 13.05.2014