Резюмирую.
Тестировался апплет на JCP 1.0.55 с ручным копированием в JRE файлов bctsp-jdk16.jar, bcmail-jdk16.jar, bcprov-jdk16.jar и прочих.
InvocationTargetException "лечится" импортом корневого сертификата в JRE cacerts
Осталась ошибка:
Error verifying the certificate CN=Vasya, O=Kontora, C=RU: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty, errors: 'PKIX failure: invalid parameters of certificate' (33)
Cause:null
- это Eception, который "ловится" в апплете. А вот то, что, в логе:
java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Program Files (x86)\Java\jre7\lib\security\cacerts" "read")
Ясно, что это из-за того, что все апплеты запускаются на клиенте в песочнице с ограниченными правами доступа к ресурсам клиентской машины. Подписание jar-ника апплета самоподписным сертификатом проблему не решает.
"Лечится" так:
Скопировать в папку профиля пользователя .java.policy с таким содержимым:
grant {
permission java.security.AllPermission;
};
Но такой .java.policy клиенту устанавливать нельзя. Подойдёт только для тестовых целей.
Возможно, проблема решится подписанием jar файла более "легитимным" сертификатом. У меня такого - нет. Попробовать не могу.
P.S. Если будете воспроизводить на наших исходниках, которые я высылал, то в методе init() апплета нужно раскомментировать этот код:
/*
//Тестовый запуск:
sign("FGHLLb");
if (key != null)
createCMS("detached");
else
if (isFinished)
text.setText("Действие отменено пользователем.\n");
*/
и добавить второй атрибут в метод createCMS("detached");
- это String tsa_address;
Я использовал такой:
createCMS("detached", "http://www.cryptopro.ru:80/tsp/");
Для чистоты эксперимента, нужно убедиться, что у вас в пользовательском профиле отсутствует файл .java.policy
Отредактировано пользователем 29 марта 2013 г. 6:58:11(UTC)
| Причина: Не указана