Статус: Новичок
Группы: Участники
Зарегистрирован: 26.11.2012(UTC) Сообщений: 5 Откуда: UA
|
Добрый день Есть компьютер на котором установлен КриптоПро, Крипто АРМ и browser-plugin Настроен локальный список отозваных сертификатов (синхронизирует с информацией от центра сертификации раз в месяц полуручным способом) и установлен корневой сертификат. Это позволяет подписывать и просматривать подписи файла через Крипто АРМ Но, при попытке подписать файл через browser-plugin на строке oSignedData.VerifyCades получаю ошибку Ошибка проверки подписей. Обратитесь к администратору: The revocation process could not continue - the certificate(s) could not be checked. (0x800B010E) Код:
var oSignedData = CreateObject("CAdESCOM.CadesSignedData");
try {
oSignedData.VerifyCades(sSignedMessage, CADESCOM_CADES_X_LONG_TYPE_1);
} catch (err) {
alert("Ошибка проверки подписей. Обратитесь к администратору: " + GetErrorMessage(err));
return false;
}
Я пробовал найти информацию по данной ошибке - как я понимаю проблема в том что валидность подписи не может быть проверена, т.к. недоступен сервер центра сертификаций. Можно ли для VerifyCades как то указать что необходимо проверять валидность подписи через локальный СОС ?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Не совсем поняла, как соотносятся слова "При попытке подписать файл" и падение на методе VerifyCades, который осуществляет проверку подписи.
Так подпись не удается создать или проверить?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.11.2012(UTC) Сообщений: 5 Откуда: UA
|
Я подписываю файл, и сразу пытаюсь проверить подписи (что бы потом передать их с браузера на сервер и сохранить информацию о подписантах отдельно от полученного файла с подписями)
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.11.2012(UTC) Сообщений: 5 Откуда: UA
|
Увидел аналогичную тему http://www.cryptopro.ru/....aspx?g=posts&t=5793Но я так и не понял можно ли проверять с СОС(CLR) при помощи Capicom >На текущий момент проверяется только цепочка сертификата, которым подписан внешний штамп времени (online). Upd: увидел еще одну тему http://cryptopro.ru/foru...t.aspx?g=posts&t=821как я понимаю можно попробовать что то типа Код:
sd.Verify( signature, true, CAPICOM_SIGNED_DATA_VERIFY_FLAG.CAPICOM_VERIFY_SIGNATURE_ONLY );
result = true;
//проверяем сертификаты, которыми были подписанны данные
foreach ( Certificate cert in csd.Certificates )
{
//устанавливаем флаг, чтобы проверить список отозванных сертификатов
cert.IsValid().CheckFlag = CAPICOM_CHECK_FLAG.CAPICOM_CHECK_ONLINE_REVOCATION_STATUS;
if ( cert.IsValid().Result == false )
{
result = false;
break;
}
}
Отредактировано пользователем 14 февраля 2013 г. 11:46:23(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Автор: MaxStoun Я подписываю файл, и сразу пытаюсь проверить подписи (что бы потом передать их с браузера на сервер и сохранить информацию о подписантах отдельно от полученного файла с подписями) А как вы создаете подпись?
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.11.2012(UTC) Сообщений: 5 Откуда: UA
|
Типа такого Код:
var certSubjectName = ... // certificate subject name нового подписанта
var fileSigned = ... // передаем был ли подписан ранее уже файл
var dataToSign = ... // base64String из данных файла
...
var oStore = CreateObject('CAPICOM.Store');
oStore.Open(CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE,
CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
var oCertificates = oStore.Certificates.Find(
CAPICOM_CERTIFICATE_FIND_SUBJECT_NAME, certSubjectName);
if (oCertificates.Count == 0) {
alert('Certificate not found: ' + certSubjectName);
return;
}
var oCertificate = oCertificates.Item(1);
var oSigningTimeAttr = CreateObject('CADESCOM.CPAttribute');
oSigningTimeAttr.Name = CAPICOM_AUTHENTICATED_ATTRIBUTE_SIGNING_TIME;
var oTimeNow = new Date();
oSigningTimeAttr.Value = ConvertDate(oTimeNow);
var oDocumentNameAttr = CreateObject('CADESCOM.CPAttribute');
oDocumentNameAttr.Name = CADESCOM_AUTHENTICATED_ATTRIBUTE_DOCUMENT_NAME;
oDocumentNameAttr.Value = 'Document Name';
var oSigner = CreateObject('CAdESCOM.CPSigner');
oSigner.Certificate = oCertificate;
oSigner.AuthenticatedAttributes2.Add(oSigningTimeAttr);
oSigner.AuthenticatedAttributes2.Add(oDocumentNameAttr);
var oSignedData;
debugger;
if (fileSigned)
{
oSignedData = GetDataObject(dataToSign);
}
else
{
oSignedData = CreateObject('CAdESCOM.CadesSignedData');
oSignedData.Content = dataToSign;
}
try {
var sSignedMessage = '';
if (fileSigned)
{
sSignedMessage = oSignedData.CoSignCades(oSigner, CADESCOM_CADES_BES);
}
else
{
sSignedMessage = oSignedData.SignCades(oSigner, CADESCOM_CADES_BES);
}
} catch (err) {
alert('Failed to create signature. Error: ' + GetErrorMessage(err));
return;
}
oStore.Close();
return sSignedMessage;
я использую SignCades или CoSignCades для подписи
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Вы создаете подпись формата CAdES-BES, а проверить ее пытаетесь как CAdES-X Long Type 1.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close