Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,927 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Вы пробовали положить CAdES.jar в папку с аплетом, с остальными jar - bouncycastle и т.д.? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.03.2013(UTC) Сообщений: 20 Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз
|
Эта следующая мысль, которая мне в голову пришла. Пока не пробовал на jcp 1.0.55. (CAdES.jar возможно придётся из JRE удалить.) У меня уже была версия апплета на jcp 1.0.53 в которой CAdES.jar именно так загружался, но там была другая проблема. Ошибка уже описана на форуме: http://www.cryptopro.ru/...;find=lastpost#post35926Даже если скопировать все jar-ники в одну кучу (JRE или папку с апплетом) дальше в том же коде: CAdESSignature cadesSignature = new CAdESSignature(detached); cadesSignature.setCertificateStore(getCollectionStore(chain)); Ошибка: 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 Хотя именно корневой сертификат тестового УЦ КриптоПро этого Васи я импортировал в cacerts. Буду сейчас этот сертификат более внимательно рассматривать.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,927 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
cacerts доступен - jre/lib/security/cacerts? Пароль на него changeit? Есть ли в коде System.setProperty("javax.net.ssl.trustStore", <path>)? Если есть, временно отключите его. Включите логирование FINE (jre/lib/logging.properties), проверьте в логе, выводится ли в ходе подписи/проверки список доверенных сертификатов, есть ли сообщения с меткой IGNORE THROWN. Судя по ошибке, в PKIXBuilderParameters подается пустой список trusted anchors, куда должны попасть доверенные сертификаты из cacerts. Возможно, cacerts не загружается. Отредактировано пользователем 27 марта 2013 г. 9:06:10(UTC)
| Причина: Уточнение |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.03.2013(UTC) Сообщений: 20 Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз
|
Ошибку InvocationTargetException при чтении сертификата из хранилища "вылечил" именно импортом корневого сертификата так:
keytool -importcert -file "E:/CryptoPro_Test.cer" -alias cryptopro_ca -keystore "C:/Program Files (x86)/Java/jre7/lib/security/cacerts" -storepass changeit
Поэтому с cacerts должно быть всё нормально. Хотя на Windows 7 64x две JRE тут C:/Program Files (x86)/Java/jre7 и тут C:/Program Files/Java/jre7. Значит 2 cacerts. Обозреватель 32х, значит используется эта: C:/Program Files (x86)/Java/jre7
Свойства в коде заполняются только эти:
// Включаем возможность онлайновой проверки. System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "true"); System.setProperty("com.sun.security.enableCRLDP", "true"); System.setProperty("com.ibm.security.enableCRLDP", "true");
javax.net.ssl.trustStore не используется.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,927 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Автор: andreypars CAdESSignature cadesSignature = new CAdESSignature(detached); cadesSignature.setCertificateStore(getCollectionStore(chain));
Ошибка в какой-то из этих строк или при подписи (sign)? При включенном .level=FINE вывод в лог при подписи должен содержать что-то вроде: Код:
ru.CryptoPro.CAdES.b.d.a <clinit>
INFO: %%% Loading C:\Program Files\Java\jre6\lib\security\cacerts %%%
FINE: Loading of trusted certificates (cacerts)...
FINE: Trusted certificates loaded (total: 91)
// Список доверенных сертификатов
INFO: %%% Trusted store loaded %%%
Отредактировано пользователем 27 марта 2013 г. 9:17:58(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.03.2013(UTC) Сообщений: 20 Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз
|
Где то в этом районе. Точно не знаю в какой строке, может быть и здесь: cadesSignature.sign(data); Включил логирование FINE. Сейчас буду смотреть.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.03.2013(UTC) Сообщений: 20 Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз
|
мар 27, 2013 12:24:27 PM ru.CryptoPro.CAdES.b.d.a <clinit> INFO: %%% Loading C:\Program Files (x86)\Java\jre7\lib\security\cacerts %%% мар 27, 2013 12:24:27 PM ru.CryptoPro.CAdES.b.d.a a FINE: Loading of trusted certificates (cacerts)... мар 27, 2013 12:24:27 PM ru.CryptoPro.CAdES.exception.CAdESException <init> SEVERE: Other application error java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Program Files (x86)\Java\jre7\lib\security\cacerts" "read") at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkRead(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at ru.CryptoPro.CAdES.b.d.a.a(Unknown Source) at ru.CryptoPro.CAdES.b.d.a.<clinit>(Unknown Source) at ru.CryptoPro.CAdES.CAdESSignature.addSigner(Unknown Source) at applet.CAdESUtil.createCMSWithTimeStamp(CAdESUtil.java:62) at applet.CryptoJCPApplet.createCMS(CryptoJCPApplet.java:351) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSInvoke.invoke(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source) at sun.plugin2.liveconnect.JavaClass$MethodInfo.invoke(Unknown Source) at sun.plugin2.liveconnect.JavaClass$MemberBundle.invoke(Unknown Source) at sun.plugin2.liveconnect.JavaClass.invoke0(Unknown Source) at sun.plugin2.liveconnect.JavaClass.invoke(Unknown Source) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$DefaultInvocationDelegate.invoke(Unknown Source) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo.doObjectOp(Unknown Source) at sun.plugin2.main.client.LiveConnectSupport$PerAppletInfo$LiveConnectWorker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
Судя по всему, это из-за того, что jar апплета не подписан.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,927 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Не удается прочитать cacerts, потому список trusted anchors пустой. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.03.2013(UTC) Сообщений: 20 Откуда: Екатеринбург Сказал(а) «Спасибо»: 2 раз
|
Подписал jar апплета так: keytool -genkey -keyalg rsa -alias vasyakey keytool -export -alias vasyakey -file vasyacert.crt jarsigner JCPApplet.jar vasyakey vasyacert.crt импортировал в хранилище через IE > Свойства браузера\Содержание\Сертификаты > Доверенные корневые сертификации. Открыл сертификат для проверки: пишет "Этот сертификат действителен." Открываю web страничку с апплетом - IE молча его запускает, но ошибка java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\Program Files (x86)\Java\jre7\lib\security\cacerts" "read") всё равно в логе есть. Пробовал импортировать vasyacert.crt в хранилище FireFox. Теперь FF на страничке апплета стала спрашивать подтверждение на запуск апплета (Do you want to run this application?). Ошибка воспроизводится. Положил в папку профиля пользователя Windows 7 (C:\Users\Vasya\) файл .java.policy Такой: grant { permission java.io.FilePermission "C:\Program Files (x86)\Java\jre7\lib\security\cacerts", "read"; }; Не помогло, хотя для других прав доступа апплета раньше помогало. Отредактировано пользователем 27 марта 2013 г. 11:09:26(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,927 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 691 раз в 652 постах
|
Пробовали
grant { permission java.security.AllPermission; };
? |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close