Самоподписанный апплет не получает полного разрешения - PullRequest
1 голос
/ 16 января 2012

Я погуглил множество ссылок, таких как oracle и обзор скорости и stackoverlow, но все еще безуспешно.

Суть проста.Jar подписывается с использованием:

keytool -genkey -alias signFiles -keystore compstore -keypass bca321 -dname "cn=test" -storepass abc123
jarsigner -keystore compstore -storepass abc123 -keypass bca321 -signedjar SignedJar.jar UnsignedJar.jar signFiles

И он отлично работает на локальной машине.Но когда SignedJar.jar используется как апплет через HTTP (S), даже если пользователь принимает сертификат (IE или FF или Chrome - без разницы), он перестает работать с:

java.security.AccessControlException: access denied (javax.smartcardio.CardPermission Broadcom Corp Contacted SmartCard 0 connect)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)

Да, он пытаетсячитать со смарт-карты, вставленной в терминал, и получает исключение при вызове соединения.

Да, я тоже пробовал этот подход:

AccessController.doPrivileged(new PrivilegedAction() {
...

Но без удачи.Так в чем же подвох?

Заранее спасибо, Кирилл

Ответы [ 2 ]

0 голосов
/ 15 августа 2014

После создания открытых / закрытых ключей, создания ассоциированного сертификата и подписания того, какой из ваших апплетов выполняет JAR-сертификат с сертификатом, вы должны создать хеш для каждого файла в JAR и подписать их с помощью закрытого ключа. Эти хеши, открытый ключ и сертификат должны быть добавлены в каталог META-INF файла JAR вместе с манифестом JAR.

Вот командная строка:

$ jar -tf SignedApplet.jar

См. ссылка

0 голосов
/ 15 января 2013

Я столкнулся с этой проблемой сегодня, java 1.7.0_11, апплеты, подписанные самозаверяющим сертификатом, добавлены в список доверенных сертификатов.Он исчез, когда я удалил раздел в файле политики, который предоставил базе кода моего апплета все разрешения.

...