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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Miroslava Orlovskaya  
#1 Оставлено : 21 ноября 2025 г. 12:18:17(UTC)
Miroslava Orlovskaya

Статус: Новичок

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

Добрый день!

На основе примеров из документации создаю подпись и успешно получаю строку с ее содержимым:
Код:
  
    public async createDetachedSign(certThumbprint: string, dataInBase64: string): Promise<string | undefined> {
    await this.checkCAdESPluginLoaded();
    // @ts-expect-error на случай если плагин не поставлен
    const { cadesplugin } = window;
    try {
      const oStore = await cadesplugin.CreateObjectAsync('CAdESCOM.Store');
      await oStore.Open(
        cadesplugin.CAPICOM_CURRENT_USER_STORE,
        cadesplugin.CAPICOM_MY_STORE,
        cadesplugin.CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED
      );

      const oStoreCerts = await oStore.Certificates;
      const oCertificates = await oStoreCerts.Find(cadesplugin.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, certThumbprint);
      const certsCount = await oCertificates.Count;
      if (certsCount === 0) {
        console.error(`Сертификат с отпечатком: '${certThumbprint}' не найден`);
        return;
      }

      const oCertificate = await oCertificates.Item(1);
      const oSigner = await cadesplugin.CreateObjectAsync('CAdESCOM.CPSigner');
      await oSigner.propset_Certificate(oCertificate);
      await oSigner.propset_CheckCertificate(true);

      const oSignedData = await cadesplugin.CreateObjectAsync('CAdESCOM.CadesSignedData');
      await oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
      await oSignedData.propset_Content(dataInBase64);

      return await oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);
    } catch (error) {
      console.error(cadesplugin.getLastError(error));
      return;
    }
  }


Далее записываю подпись в файл .sig и скачиваю:

Код:
    
    const data = await this.api.createDetachedSign(certificateSubjectName.thumbprint, base64File);
    if (data !== undefined) {
      this.state.update((state) => ({ ...state, deattachedSign: data }));
      
      const blob = new Blob([data], { type: 'application/octet-stream' });
      const url = window.URL.createObjectURL(blob);

      const a = document.createElement('a');
      a.href = url;
      a.download = 'signature.sig';
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);

      window.URL.revokeObjectURL(url);
    }


Однако, при проверке на сервисе https://dss.cryptopro.ru/verify/#/signature , получаю следующее сообщение:

Цитата:
Результат проверки: Подпись недействительна
Исходный документ: signature.xml
Дополнительная информация: Подпись не соответствует документу. Возможно, на проверку был передан неправильный документ или документ был изменён. Ошибка: [Неправильное значение хеша] (0x80091007).Сообщение содержит неверную подпись. Цепочка сертификатов обработана, но обработка прервана на корневом сертификате, у которого отсутствует отношение доверия с поставщиком доверия.


Сервис распознает данные о сертификате, формат и время подписи, но все же смущает сообщение об ошибке. В чем может быть ошибка?
Offline Андрей *  
#2 Оставлено : 21 ноября 2025 г. 14:38:46(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,022
Мужчина
Российская Федерация

Сказал «Спасибо»: 609 раз
Поблагодарили: 2364 раз в 1860 постах
Здравствуйте.

Пришлите файл и sig.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 21 ноября 2025 г. 14:42:11(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,022
Мужчина
Российская Федерация

Сказал «Спасибо»: 609 раз
Поблагодарили: 2364 раз в 1860 постах
как вариант:
получите тестовый сертификат https://testgost2012.cryptopro.ru/certsrv/
подпишете файл

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