Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

4 Страницы123>»
Опции
К последнему сообщению К первому непрочитанному
Offline andreypars  
#1 Оставлено : 26 марта 2013 г. 10:00:45(UTC)
andreypars

Статус: Участник

Группы: Участники
Зарегистрирован: 25.03.2013(UTC)
Сообщений: 20
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
История такова:
Есть у меня рабочий апплет основанный на JCP. После выхода CAdES для JCP, потребовалось добавить в него функционал по созданию CAdES-X Long Type 1 подписи со штампом времени.

Пробую на дистрибутиве jcp_plus_jtls_1.0.55.zip.

Внутри в папке lib вижу CAdES.jar и понятно, что он интегрируется в JRE. Но для поддержки CAdES нужны дополнительные jar'ники. Нахожу их в dependencies. Вроде в JRE они не встраиваются. Ок. Положил содержимое папки dependencies в папку с апплетом сервера приложений tomcat.

При открытии странички с апплетом в браузере в логе Tomcat вижу следующие ошибки:

325824 [http-8280-Processor25] (26 мар 2013 11:44:18,883) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/xml-apis.jar
325839 [http-8280-Processor25] (26 мар 2013 11:44:18,898) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/xercesImpl.jar
325849 [http-8280-Processor25] (26 мар 2013 11:44:18,908) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/xml-apis.jar
325894 [http-8280-Processor25] (26 мар 2013 11:44:18,953) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/xercesImpl.jar
325906 [http-8280-Processor25] (26 мар 2013 11:44:18,965) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/xml-apis.jar
325910 [http-8280-Processor25] (26 мар 2013 11:44:18,969) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/xml-apis.jar
325921 [http-8280-Processor25] (26 мар 2013 11:44:18,980) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/ru/CryptoPro/JCP/tools/resources/logger.class
325925 [http-8280-Processor25] (26 мар 2013 11:44:18,984) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/ru/CryptoPro/JCP/tools/resources/logger.properties
325932 [http-8280-Processor25] (26 мар 2013 11:44:18,991) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/ru/CryptoPro/JCP/tools/resources/logger_ru.class
325938 [http-8280-Processor25] (26 мар 2013 11:44:18,997) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/ru/CryptoPro/JCP/tools/resources/logger_ru.properties
325946 [http-8280-Processor25] (26 мар 2013 11:44:19,005) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/ru/CryptoPro/JCP/tools/resources/logger_ru_RU.class
325952 [http-8280-Processor25] (26 мар 2013 11:44:19,011) INFO servlet.FxJspFakeServlet - Resource not found: /dms.crypto/applet/ru/CryptoPro/JCP/tools/resources/logger_ru_RU.properties

Видимо, каких то jar-ников не хватает. Нагуглил, скачал и положил в папку с jar файлом апплета следующие файлы: xml-apis.jar, xercesImpl.jar
Теперь апплет грузится на вебстранице со следующим html-кодом:

<applet code="applet.CryptoJCPApplet.class" WIDTH="400" HEIGHT="60"
id="jcpapplet" codebase="$dcs.crypto/applet"
archive="JCPApplet.jar, bcmail-jdk16.jar, bcprov-jdk16.jar, bctsp-jdk16.jar, commons-logging.jar, junit.jar, serializer.jar, xalan.jar, xmlsec.jar, xml-apis.jar, xercesImpl.jar"
ALT="Java applet CryptoPro JCP">
<H1>WARNING!</H1>
The browser you are using is unable to load Java Applets! </applet>

На отсутсвие xml-apis.jar, xercesImpl.jar больше не ругается. Но не понятно, где взять эти ресурсы:
logger.class
logger.properties
logger_ru.class
logger_ru.properties
logger_ru_RU.class
logger_ru_RU.properties

Это первая проблема. Теперь появилась вторая:
В следующем коде:

try
{
key = store.getKey(alias, keyPass);
Certificate cert = store.getCertificate(alias);
}
catch (Exception e) {}


В строке [Certificate cert = store.getCertificate(alias);] Стала выскакивать ошибка InvocationTargetException в отдельном окне JVM. Причем подробности узнать нельзя, т.к. она не ловится блоком catch (Exception e). Проблема только при загрузке сертификата из хранилища. Ключ извлекается нормально. Хранилище - стандартное JCP, которое открывается через ControlPane.bat

InvocationTargetException валится только при использовании сборок jcp_plus_jtls_1.0.54.zip и jcp_plus_jtls_1.0.55.zip
Пробовал откатываться на jcp_plus_jtls_1.0.53.zip и ранее - ошибка исчезает. Там CAdES.jar не интегрируется прямо в JRE, а грузится вместе с jar-ником апплета. Т.е. CAdES.jar расположен в той же папке, что и jar файл апплета и прописан в html атрибуте archive.

Пробовал использовать старый рабочий jar'ник апплета без поддержки CAdES который был собран и нормально работал под jcp.1.0.52.zip (при установленной jcp_plus_jtls_1.0.55.zip) - всё равно InvocationTargetException при попыке получить сертификат из хранилища.

В чём может быть проблема?
Offline Евгений Афанасьев  
#2 Оставлено : 26 марта 2013 г. 10:15:00(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Здравствуйте.
На могли бы вы включить логирование FINE, прикрепить лог.
Какую jre используете?
Проблема появляется только при использовании в апплете?
Offline Евгений Афанасьев  
#3 Оставлено : 26 марта 2013 г. 10:23:46(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Автор: andreypars Перейти к цитате
ресурсы:
logger.properties
logger_ru.properties


Ресурсы находятся в JCP.jar, в ru/CryptoPro/JCP/tools/resources

1) Попробуйте положить CAdes.jar рядом с апплетом, как раньше.
2) Не могли бы вы приложить сертификат?

Отредактировано пользователем 26 марта 2013 г. 10:28:53(UTC)  | Причина: Не указана

Offline andreypars  
#4 Оставлено : 26 марта 2013 г. 10:36:24(UTC)
andreypars

Статус: Участник

Группы: Участники
Зарегистрирован: 25.03.2013(UTC)
Сообщений: 20
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Апплет запускал на страничке в обозревателях IE 10 (32х) и FF 19.0.2 (32х) под Windows 7 64x.
Версия JRE 1.7.0_17 установлена в C:\Program Files (x86)\Java\jre7

Про логирование FINE не вкурсе, как нагуглю разберусь и приложу лог.

У нас нет серверной версии JCP, только клиентская, на апплете. На сервере не пробовал читать сертификат из хранилища.

Если нужно, могу прислать jar апплета, он не большой.

За ресурсы - спасибо, буду пробовать.
Вложение(я):
JCPApplet.zip (40kb) загружен 4 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#5 Оставлено : 26 марта 2013 г. 10:38:01(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Автор: andreypars Перейти к цитате
Если нужно, могу прислать jar апплета, он не большой

Да, приложите, пожалуйста.

Написал в pm.

Отредактировано пользователем 26 марта 2013 г. 10:39:49(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#6 Оставлено : 26 марта 2013 г. 11:00:39(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
OS: Windows 7 (64-b)
JRE: 1.7.0_05 (32-b), c:\Program Files (x86)\Java\jre7
Установлен jcp_jtls_1.0.55 (только jcp), сборка 36716
В папке c:\Program Files (x86)\Java\jre7\lib\ext:
ASN1P.jar
asn1rt.jar
bcmail-jdk16.jar
bcprov-jdk16.jar
bctsp-jdk16.jar
CAdES.jar
dnsns.jar
forms_rt.jar
JCP.jar
JCPinst.jar
JCPRequest.jar
JCPRevCheck.jar
JCPRevTools.jar
JCPxml.jar
JCryptoP.jar
localedata.jar
meta-index
sunec.jar
sunjce_provider.jar
sunmscapi.jar
sunpkcs11.jar
XMLDSigRI.jar
zipfs.jar

Апплет положил в папку, рядом - html, немножко изменил:
<applet code="applet.CryptoJCPApplet.class" archive="JCPApplet.jar" WIDTH="400" HEIGHT="60">
<H1>WARNING!</H1>
The browser you are using is unable to load Java Applets! </applet>

Загрузился апплет (картинка приложена).

Пользователь Евгений Афанасьев прикрепил следующие файлы:
ie.jpg (28kb) загружен 1,565 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#7 Оставлено : 26 марта 2013 г. 11:05:54(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
1) С лицензией все в порядке?
2) проверьте конфиг для логирования, пропишите в нем, например,
ru.CryptoPro.JCP.tools.JCPLogger.level = INFO
ru.CryptoPro.JCP.tools.JCPLogger.handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler

Попробую 1.0.54

С 1.0.54 тоже показалась эта надпись. При удалении jcp из jre выводится список, видимо, провайдеров.

Отредактировано пользователем 26 марта 2013 г. 11:12:56(UTC)  | Причина: Не указана

Offline andreypars  
#8 Оставлено : 26 марта 2013 г. 11:10:56(UTC)
andreypars

Статус: Участник

Группы: Участники
Зарегистрирован: 25.03.2013(UTC)
Сообщений: 20
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Апплет грузится нормально. Проблема дальше.
Он управляется кнопками на веб странице с кучей java скрипта. Эту страницу я выслать не могу. Подписываемый контент принимается с сервера в java script через Ajax. Java script вызывает метод апплета:
public void sign(String base64encodedContent)

Вот здесь ошибку и выкидывает. Получается, что просто jar'ник апплета вам бесполезен сам по себе. Я выслал исходники на email с комментариями.
Offline Евгений Афанасьев  
#9 Оставлено : 26 марта 2013 г. 11:18:32(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,927
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 691 раз в 652 постах
Написал в pm
Offline andreypars  
#10 Оставлено : 27 марта 2013 г. 8:26:41(UTC)
andreypars

Статус: Участник

Группы: Участники
Зарегистрирован: 25.03.2013(UTC)
Сообщений: 20
Российская Федерация
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 2 раз
Ошибку InvocationTargetException при чтении сертификата из хранилища я победил. А подписание jar-ник апплета сертификатом не помогло.

Теперь другая проблема:

java.lang.NoClassDefFoundError: org/bouncycastle/cms/CMSAttributeTableGenerator
Cause:java.lang.ClassNotFoundException: org.bouncycastle.cms.CMSAttributeTableGenerator

Где-то в этом коде:

CAdESSignature cadesSignature = new CAdESSignature(detached);
cadesSignature.setCertificateStore(getCollectionStore(chain));
// Создаем подписанта CAdES-BES.
cadesSignature.addSigner(CAdESConfig.getDefaultDigestSignatureProvider(), JCP.GOST_DIGEST_OID, JCP.GOST_EL_KEY_OID,
privateKey, chain, CAdESType.CAdES_BES, null, false, getSignedAttributes(), getUnsignedAttributes());
// Создаем подписанта CAdES-X Long Type 1.
cadesSignature.addSigner(privateKey, chain, CAdESType.CAdES_X_Long_Type_1, tsa_address);


CMSAttributeTableGenerator.class расположен в bcmail-jdk16.jar

Апплет грузится в этом html-коде:

<applet code="applet.CryptoJCPApplet.class" WIDTH="400" HEIGHT="60"
id="jcpapplet" codebase="$dcs.crypto/applet"
archive="JCPApplet.jar, bcmail-jdk16.jar, bcprov-jdk16.jar, bctsp-jdk16.jar, commons-logging.jar, junit.jar, serializer.jar, xalan.jar, xmlsec.jar, xml-apis.jar, xercesImpl.jar"
ALT="Java applet CryptoPro JCP"></applet>

Где все внешние jar-ники перечислены. Сами jar-ники расположены в той же папке, что и апплет.
Причем если вызывать классы bouncycastle напрямую из апплета - всё нормально.
ClassNotFoundException только когда их из CAdES.jar вызывают.

В качестве эксперимента, скопировал все jar-ники из jcp папки dependencies в JRE (C:\Program Files (x86)\Java\jre7\lib\ext\) и данная ошибка исчезла.

Вопрос: нужно ли содержимое dependencies вручную копировать в JRE и если нет - как заставить CAdES "видеть" их там же, где и апплет?

Отредактировано пользователем 27 марта 2013 г. 8:28:03(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
4 Страницы123>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.