Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.10.2018(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 4 раз
|
Добрый день, уважаемые форумчане! Заранее приношу свои извинения за создание новой темы, но в предыдущий раз я так и не получил ответа. Итак, этот вопрос некое продолжение вот этого топика https://www.cryptopro.ru/forum2/...aspx?g=posts&t=14918. Кратко в чем суть проблемы: Есть ЭЦП на внешнем ключевом носителе (сразу скажу, что она не менялась при переходе с 2018 на 2019 годы). Есть веб-сервис, на котором для входа используется ЭЦП. Если на этот сервис войти через браузер, то активируется плагин для браузера (CryptoPro CAdES-plugin), формируется ЭЦП и вход успешно выполняется (так было и в 2018, так продолжает работать в 2019 годах). Стоит задача написать desktop приложение на java для работы с этим сервисом. Для формирование ЭЦП был выбрал набор классов из состава JCP. Во время разработки в 2018 году выводилось уведомление о необходимости перехода на ГОСТ 34.10-2012 с 01.01.2019, но это было уведомление, но подпись успешно формировалась и вход на сервис через приложение успешно выполнялся. Наступил 2019 год (повторюсь, никаких действий по переходу на ГОСТ 34.10-2012 с моей стороны не выполнялось). Вход через браузер (CryptoPro CAdES-plugin) продолжает успешно работать, а вот формирование подписи через JCP уже "отваливается" с исключением (использовать ГОСТ 34.10-2001 запрещено). Возникает несколько вопросов: 1. Почему же работает плагин для браузера? 2. Как с помощью классов JCP создать подпись в 2019 повторив функционал плагина?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,924 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 690 раз в 651 постах
|
Здравствуйте. Автор: maximkosheev Во время разработки в 2018 году выводилось уведомление о необходимости перехода на ГОСТ 34.10-2012 с 01.01.2019, но это было уведомление, но подпись успешно формировалась и вход на сервис через приложение успешно выполнялся. Наступил 2019 год (повторюсь, никаких действий по переходу на ГОСТ 34.10-2012 с моей стороны не выполнялось). Вход через браузер (CryptoPro CAdES-plugin) продолжает успешно работать, а вот формирование подписи через JCP уже "отваливается" с исключением (использовать ГОСТ 34.10-2001 запрещено). Возникает несколько вопросов: 1. Почему же работает плагин для браузера? 2. Как с помощью классов JCP создать подпись в 2019 повторив функционал плагина?
В используемой вами версии jcp есть ограничение на использование ГОСТ 2001. 1. Плагин и jcp - разные продукты и могут вести себя по-разному. 2. Обновить jcp до последней версии с сайта или следовать инструкциям https://support.cryptopr...-v-kriptopro-jcp-2039014 и https://support.cryptopr...410-2001-v-kriptopro-jcp |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.10.2018(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 4 раз
|
Из предложенных вами решений выбрал вариант с переходом на последнюю версию JCP версии 2.0.40035. После перехода на эту версию описанная выше проблема устранилась, однако появились новые. 1. Не могу создать подпись по причине вот такой ошибки: Код:
Invalid encryption oid 1.2.643.2.2.19 (invalid private key algorithm or encryption algorithm), expected: 1.2.643.2.2.98; error codes: [109] 'Algorithm mismatch',
at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)
Хочу обратить внимание на то, что код формирования подписи не изменялся, а при работе с версией JCP 2.0.39014 такой ошибки не возникало. 2. Очень часто стали появляться ошибки такого рода: Код:
янв 10, 2019 12:19:09 AM ru.CryptoPro.JCP.tools.Starter check
INFO: Loading JCP 2.0.40035
янв 10, 2019 12:19:09 AM ru.CryptoPro.JCP.tools.Starter check
INFO: JCP loaded.
янв 10, 2019 12:19:09 AM ru.CryptoPro.JCP.KeyStore.Rutoken.cl_2 readFile
WARNING: ERROR
java.io.IOException: java.lang.IllegalStateException: Card has been disconnected
at ru.CryptoPro.JCP.KeyStore.Rutoken.cl_2.readFile(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.ContainerEncoder.readName(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_4.a(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_10.b(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_10.b(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_12.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at ru.CryptoPro.JCP.KeyStore.cl_10.c(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_10.<init>(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineAliases(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineAliases(Unknown Source)
at java.security.KeyStore.aliases(KeyStore.java:1235)
at net.monsterdev.automosreg.services.impl.CryptoServiceImpl.getCertificatesList(CryptoServiceImpl.java:97)
...
Caused by: java.lang.IllegalStateException: Card has been disconnected
at sun.security.smartcardio.CardImpl.checkState(CardImpl.java:109)
at sun.security.smartcardio.CardImpl.endExclusive(CardImpl.java:222)
at ru.CryptoPro.JCP.KeyStore.Rutoken.pc_0.cl_2.d(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.Rutoken.pc_1.cl_4.c(Unknown Source)
... 45 more
янв 10, 2019 12:19:09 AM ru.CryptoPro.JCP.KeyStore.Rutoken.cl_2 readFile
WARNING: ERROR
java.io.IOException: java.lang.IllegalStateException: Card has been disconnected
at ru.CryptoPro.JCP.KeyStore.Rutoken.cl_2.readFile(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.ContainerEncoder.isHeaderExist(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_4.a(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_10.b(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_10.b(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_12.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at ru.CryptoPro.JCP.KeyStore.cl_10.c(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_10.<init>(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineAliases(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineAliases(Unknown Source)
at java.security.KeyStore.aliases(KeyStore.java:1235)
at net.monsterdev.automosreg.services.impl.CryptoServiceImpl.getCertificatesList(CryptoServiceImpl.java:97)
...
Caused by: java.lang.IllegalStateException: Card has been disconnected
at sun.security.smartcardio.CardImpl.checkState(CardImpl.java:109)
at sun.security.smartcardio.CardImpl.endExclusive(CardImpl.java:222)
at ru.CryptoPro.JCP.KeyStore.Rutoken.pc_0.cl_2.d(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.Rutoken.pc_1.cl_4.d(Unknown Source)
... 45 more
янв 10, 2019 12:19:09 AM ru.CryptoPro.JCP.KeyStore.J6CF.CardReader lock
INFO: Выбран первый доступный считыватель (Aktiv Co. ruToken 0)
янв 10, 2019 12:19:09 AM ru.CryptoPro.JCP.KeyStore.J6CF.CardReader lock
WARNING: ERROR
java.io.IOException
at ru.CryptoPro.JCP.KeyStore.J6CF.CardReader.lock(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.cl_19.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at ru.CryptoPro.JCP.KeyStore.ContainerStore.a(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineAliases(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineAliases(Unknown Source)
at java.security.KeyStore.aliases(KeyStore.java:1235)
at net.monsterdev.automosreg.services.impl.CryptoServiceImpl.getCertificatesList(CryptoServiceImpl.java:97)
...
Caused by: javax.smartcardio.CardException: Карта не вставлена (считыватель: Aktiv Co. ruToken 0)
at ru.CryptoPro.JCP.KeyStore.J6CF.ReaderMedia.a(Unknown Source)
at ru.CryptoPro.JCP.KeyStore.J6CF.ReaderMedia.init(Unknown Source)
... 40 more
При том, что карта постоянно установлена. Такая ошибка то возникает, то нет. Опять таки с версией JCP 39014 такого не наблюдалось. 3. Случайно удалил примеры кода идущие вместе с JCP, где можно их скачать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,924 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 690 раз в 651 постах
|
Здравствуйте. 1. В последних версиях была добавлена проверка на соответствие передаваемого в addSigner oid'а алгоритма и oid'а алгоритма ключа. Соответственно, для ключа обмена (privateKey в addSigner) ожидается 1.2.643.2.2.98. Пожалуй, проще задать там null у encryptionAlg и null у digestAlg (обычно второй и третий параметр addSigner, после имени провайдера). 2. Лог немного странный, так как есть исключения и из Rutoken.jar (например, ru.CryptoPro.JCP.KeyStore.Rutoken.cl_2.readFile), и J6CF (обертка над smartcardio для работы с токенами). правильно понимаем, что в getCertificatesList используется перечисление всех key store и поиск сертификата по ним? В итоге сертификат не найден нигде (поиск происходит по порядку: HDImageStore, RutokenStore, J6CFStore?). Включите, пожалуйста, логирование JCPLogger с уровнем ALL (https://support.cryptopro.ru/index.php?/Knowledgebase/Article/View/45/6/vkljuchenie-zhurnlirovnija-kriptopro-jcp), соберите лог и приложите (в будущем в любом случае потребуется использовать Rutoken.jar, т.к. модуль от Актив не развивается). Пока можно попробовать переключиться на вариант с модулем поддержки от Актив (как для 39014, у него имя хранилища то же самое), установив его, но придется удалить модуль Rutoken.jar (под управлением учетной записи администратора): <JRE>/bin/java ru.CryptoPro.JCP.KeyStore.Rutoken.Install -uninstall Если это windows, то после физически удалить Rutoken.jar из JRE. 3. Все примеры находятся в дистрибутиве JCP, в файле samples-sources.jar. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.10.2018(UTC) Сообщений: 36 Сказал(а) «Спасибо»: 4 раз
|
Цитата: правильно понимаем, что в getCertificatesList используется перечисление всех key store и поиск сертификата по ним? В итоге сертификат не найден нигде (поиск происходит по порядку: HDImageStore, RutokenStore, J6CFStore
Да, все верно. getCertificatesList формирует список сертификатов, находящихся на всех хранилищах, доступных через JCP провайдера. В приложенном файле находится лог (вернее та его часть, которая относится к теме) jcplog.txt (59kb) загружен 4 раз(а).
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close