Ошибка создания контекста сертификата получателя 0x8009310b


Offline

e217onr

 


#1
Оставлено
:

17 августа 2018 г. 10:17:16(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Пытаюсь реализовать функционал проверки подписи. В консоли постоянно возникает ошибка:
Uncaught (in promise)
message: «Встречено неверное значение тега ASN1. (0x8009310B)»
requestid: 33
type: «error»
Просмотрел уже множество тем на эту тему в интернете но так и не нашёл внятного ответа в чём может быть проблема. Что это вообще за ошибка и что она означает? В какую сторону копать?


Вверх

Offline

Андрей Писарев

 


#2
Оставлено
:

17 августа 2018 г. 10:59:03(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,740
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Здравствуйте.

Можете приложить или прислать в ЛС файл подписи и документ, который подписывали?

Ошибка возникает только с этим файлом?
Пробовали подписывать через тестовую страницу и проверять результат через свой код (а также код, который доступен в примерах к руководству)?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

e217onr

 


#3
Оставлено
:

17 августа 2018 г. 13:22:59(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

Здравствуйте.

Можете приложить или прислать в ЛС файл подписи и документ, который подписывали?

Ошибка возникает только с этим файлом?
Пробовали подписывать через тестовую страницу и проверять результат через свой код (а также код, который доступен в примерах к руководству)?

Ошибка возникает со всеми файлами, поэтому не думаю что прикрепление файлов даст результат.
Через тестовую страницу всё работает прекрасно. Думаю проблема в моём JS-коде. Пробовал использовать код с тестовой страницы и всячески его изменять, но итог всегда один — Ошибка 0x8009310B. Так же время от времени при изменении кода JS меняется число в параметре requestid ошибки.


Вверх

Offline

Андрей Писарев

 


#4
Оставлено
:

17 августа 2018 г. 14:12:15(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,740
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

По примерам из документации делаете примеры?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Андрей Писарев

 


#5
Оставлено
:

17 августа 2018 г. 14:13:43(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,740
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Пробовали подписать и проверить результат сразу?
Что передаете при проверке — проверяли (какие данные указанызакодированы в base64, опции)?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

e217onr

 


#6
Оставлено
:

20 августа 2018 г. 9:16:42(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

По примерам из документации делаете примеры?

Примеры из документации не работают, т.к. там представлен код для синхронных запросов, а у меня используются асинхронные. При попытке использовать код из документации, получаю разные ошибки типа «CreateObject is not a function» и тд.

Автор: Андрей Писарев Перейти к цитате

Пробовали подписать и проверить результат сразу?
Что передаете при проверке — проверяли (какие данные указанызакодированы в base64, опции)?

Только что попробовал проверить подпись сразу после создания, получаю ту же ошибку, но с requestId = 44.
Вот мой код функции для проверки подписи:

Код:

function Verify(sSignedMessage, dataToVerify) {
    var oSignedData = cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
    try {
        oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
        oSignedData.Content = dataToVerify;
        oSignedData.then(function(data) {
            data.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
        });
    } catch (err) {
        alert("Не удалось проверить подпись. Ошибка: " + cadesplugin.getLastError(err));
        return false;
    }

    return true;
}

где sSignedMessage — контент кодируемого документа в формате base64, а dataToVerify — готовая подпись этого контента.
Что я делаю не так?


Вверх

Offline

Андрей Писарев

 


#7
Оставлено
:

20 августа 2018 г. 13:55:11(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,740
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Цитата из примера:

Цитата:

Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами.

Создание подписи CADES_BES с использованием асинхронной версии

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Андрей Писарев

 


#8
Оставлено
:

20 августа 2018 г. 13:59:06(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 11,740
Мужчина
Российская Федерация

Сказал «Спасибо»: 451 раз
Поблагодарили: 1838 раз в 1421 постах

Также можно посмотреть работу на демо-странице и посмотреть функции из js-файлов.

Code.js

cadesplugin_api.js

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

e217onr

 


#9
Оставлено
:

20 августа 2018 г. 14:08:34(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

Цитата из примера:

Цитата:

Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами.

Создание подписи CADES_BES с использованием асинхронной версии

Здесь пример создания подписи. Создание у меня работает. Нужна проверка.


Вверх

Offline

e217onr

 


#10
Оставлено
:

20 августа 2018 г. 14:14:03(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

Также можно посмотреть работу на демо-странице и посмотреть функции из js-файлов.

Code.js

cadesplugin_api.js

Собственно так и работает моя подпись файлов. Я взял эти 2 файла js-скриптов, закинул их в свой проект и настроил работу подписи исходя из этих файлов. Подпись работает великолепно, не работает именно ПРОВЕРКА подписи. Насчёт проверки очень мало написано в документации. Насчёт проверки асинхронными методами — вообще ни слова. Как мне в итоге проверить мою подпись?


Вверх
Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Обновлено 2023 января: перестаньте получать сообщения об ошибках и замедлите работу вашей системы с помощью нашего инструмента оптимизации. Получить сейчас в эту ссылку

  1. Скачайте и установите инструмент для ремонта здесь.
  2. Пусть он просканирует ваш компьютер.
  3. Затем инструмент почини свой компьютер.

Ошибка Windows 0x8009310B вызвана неподходящим закрытым ключом. Если закрытый ключ все еще находится на сервере, возможно установить сертификат и восстановить закрытый ключ. Следующее решение может исправить ошибку; если это не работает, сертификат должен быть заменен.

Восстановление поврежденного сертификата

Откройте командную строку DOS (cmd.exe).

Введите: certutil -repairstore мое «ЗНАЧЕНИЕ ПЕЧАТИ ИЛИ СЕРИЙНЫЙ НОМЕР».

Примечание. Если вы не уверены, что можете найти THUMBPRINT или СЕРИЮ, следуйте этим инструкциям. Кроме того, сертификат иногда недоступен и должен быть импортирован, чтобы эта команда работала. Если вы получили сообщение об ошибке, убедитесь, что используемая вами СЕРИЯ и / или ТЕМАТИЧЕСКАЯ ПЕЧАТЬ являются ТОЧНЫМИ, указанными в вашем сертификате, поскольку Windows иногда вставляет один или несколько вопросительных знаков, что приводит к ошибке.

Вернитесь в диспетчер IIS и снова измените ярлыки для этого сайта. (Где вы можете выбрать сертификат)

Примечание. Иногда вы получаете сообщение об ошибке, поэтому просто проигнорируйте ошибку и попробуйте снова. При повторной попытке может оказаться, что сертификат уже выбран, и больше ничего не нужно делать. Если вы не видите сертификат в списке, вам может потребоваться дать ему понятное имя в MMC, изменив его свойства.

Обновление за январь 2023 года:

Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows — нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:

  • Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
  • Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
  • Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.

скачать

Сканирование папки

1. нажмите на Пуск. выберите Run.
2. введите SIGVERIF в открытое поле.
3. нажмите на ОК
4. Нажмите кнопку «Дополнительно» и выберите «Искать другие файлы без цифровой подписи».
5. Нажмите кнопку «Обзор» в поле «Искать в этой папке» и укажите папку C: WINDOWS SYSTEM32 CATROOT.
6. Установите флажок «Включить подпапки».
7. нажмите ОК, затем на Пуск.
8. После завершения сканирования появится окно со списком неподписанных файлов.

Импорт сертификата в хранилище сертификатов компьютера

  • Создание оснастки сертификата в консоли MMC от KB Solution SO1849
  • На левой панели разверните папку «Сертификаты», разверните ее и выберите личную папку.
  • Щелкните правой кнопкой мыши папку «Сертификаты» в личной папке, выберите «Все задачи», выберите «Импорт».
  • Откроется Мастер импорта сертификатов. Нажмите на Далее
  • Щелкните Обзор, затем перейдите к файлу, содержащему сертификат SSL. Нажмите «Открыть»> «Далее».
  • Убедитесь, что выбрано «Поместить все сертификаты в следующий список», убедитесь, что в списке сертификатов указано «Личные», нажмите «Далее»> «Готово».

https://stackoverflow.com/questions/26011760/cryptdecodeobjectex-bad-tag-error-0x8009310b

Совет экспертов: Этот инструмент восстановления сканирует репозитории и заменяет поврежденные или отсутствующие файлы, если ни один из этих методов не сработал. Это хорошо работает в большинстве случаев, когда проблема связана с повреждением системы. Этот инструмент также оптимизирует вашу систему, чтобы максимизировать производительность. Его можно скачать по Щелчок Здесь

ed_moyes

CCNA, веб-разработчик, ПК для устранения неполадок

Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.

Сообщение Просмотров: 108

  • Remove From My Forums
  • Question

  • Hi All,

    I have recieved CSR request from App team but i am getting below error While creating Certificate in root CA.

    Certificate Request Denied

    Your certificate request was denied.

    Your Request Id is 0. The disposition message is

    «Error Parsing Request ASN1 bad tag value met. 0x8009310b (ASN: 267)».

    Contact your administrator for further information.

Answers

  • Thanks Elke . Issue fixed . Application team send one more updated CSR and now i am able to create certificate .

    • Marked as answer by

      Tuesday, July 29, 2014 3:01 AM

  • Remove From My Forums
  • Question

  • Hi All,

    I have recieved CSR request from App team but i am getting below error While creating Certificate in root CA.

    Certificate Request Denied

    Your certificate request was denied.

    Your Request Id is 0. The disposition message is

    «Error Parsing Request ASN1 bad tag value met. 0x8009310b (ASN: 267)».

    Contact your administrator for further information.

Answers

  • Thanks Elke . Issue fixed . Application team send one more updated CSR and now i am able to create certificate .

    • Marked as answer by

      Tuesday, July 29, 2014 3:01 AM

  • Remove From My Forums
  • Question

  • Hi All,

    I have recieved CSR request from App team but i am getting below error While creating Certificate in root CA.

    Certificate Request Denied

    Your certificate request was denied.

    Your Request Id is 0. The disposition message is

    «Error Parsing Request ASN1 bad tag value met. 0x8009310b (ASN: 267)».

    Contact your administrator for further information.

Answers

  • Thanks Elke . Issue fixed . Application team send one more updated CSR and now i am able to create certificate .

    • Marked as answer by

      Tuesday, July 29, 2014 3:01 AM


Offline

e217onr

 


#1
Оставлено
:

17 августа 2018 г. 10:17:16(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Пытаюсь реализовать функционал проверки подписи. В консоли постоянно возникает ошибка:
Uncaught (in promise)
message: «Встречено неверное значение тега ASN1. (0x8009310B)»
requestid: 33
type: «error»
Просмотрел уже множество тем на эту тему в интернете но так и не нашёл внятного ответа в чём может быть проблема. Что это вообще за ошибка и что она означает? В какую сторону копать?


Вверх


Offline

Андрей Писарев

 


#2
Оставлено
:

17 августа 2018 г. 10:59:03(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,010
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1912 раз в 1478 постах

Здравствуйте.

Можете приложить или прислать в ЛС файл подписи и документ, который подписывали?

Ошибка возникает только с этим файлом?
Пробовали подписывать через тестовую страницу и проверять результат через свой код (а также код, который доступен в примерах к руководству)?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

e217onr

 


#3
Оставлено
:

17 августа 2018 г. 13:22:59(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

Здравствуйте.

Можете приложить или прислать в ЛС файл подписи и документ, который подписывали?

Ошибка возникает только с этим файлом?
Пробовали подписывать через тестовую страницу и проверять результат через свой код (а также код, который доступен в примерах к руководству)?

Ошибка возникает со всеми файлами, поэтому не думаю что прикрепление файлов даст результат.
Через тестовую страницу всё работает прекрасно. Думаю проблема в моём JS-коде. Пробовал использовать код с тестовой страницы и всячески его изменять, но итог всегда один — Ошибка 0x8009310B. Так же время от времени при изменении кода JS меняется число в параметре requestid ошибки.


Вверх


Offline

Андрей Писарев

 


#4
Оставлено
:

17 августа 2018 г. 14:12:15(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,010
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1912 раз в 1478 постах

По примерам из документации делаете примеры?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Андрей Писарев

 


#5
Оставлено
:

17 августа 2018 г. 14:13:43(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,010
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1912 раз в 1478 постах

Пробовали подписать и проверить результат сразу?
Что передаете при проверке — проверяли (какие данные указанызакодированы в base64, опции)?

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

e217onr

 


#6
Оставлено
:

20 августа 2018 г. 9:16:42(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

По примерам из документации делаете примеры?

Примеры из документации не работают, т.к. там представлен код для синхронных запросов, а у меня используются асинхронные. При попытке использовать код из документации, получаю разные ошибки типа «CreateObject is not a function» и тд.

Автор: Андрей Писарев Перейти к цитате

Пробовали подписать и проверить результат сразу?
Что передаете при проверке — проверяли (какие данные указанызакодированы в base64, опции)?

Только что попробовал проверить подпись сразу после создания, получаю ту же ошибку, но с requestId = 44.
Вот мой код функции для проверки подписи:

Код:

function Verify(sSignedMessage, dataToVerify) {
    var oSignedData = cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
    try {
        oSignedData.ContentEncoding = CADESCOM_BASE64_TO_BINARY;
        oSignedData.Content = dataToVerify;
        oSignedData.then(function(data) {
            data.VerifyCades(sSignedMessage, CADESCOM_CADES_BES, true);
        });
    } catch (err) {
        alert("Не удалось проверить подпись. Ошибка: " + cadesplugin.getLastError(err));
        return false;
    }

    return true;
}

где sSignedMessage — контент кодируемого документа в формате base64, а dataToVerify — готовая подпись этого контента.
Что я делаю не так?


Вверх


Offline

Андрей Писарев

 


#7
Оставлено
:

20 августа 2018 г. 13:55:11(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,010
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1912 раз в 1478 постах

Цитата из примера:

Цитата:

Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами.

Создание подписи CADES_BES с использованием асинхронной версии

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

Андрей Писарев

 


#8
Оставлено
:

20 августа 2018 г. 13:59:06(UTC)

Андрей *

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

Группы: Участники

Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,010
Мужчина
Российская Федерация

Сказал «Спасибо»: 457 раз
Поблагодарили: 1912 раз в 1478 постах

Также можно посмотреть работу на демо-странице и посмотреть функции из js-файлов.

Code.js

cadesplugin_api.js

Техническую поддержку оказываем тут
Наша база знаний


Вверх

WWW


Offline

e217onr

 


#9
Оставлено
:

20 августа 2018 г. 14:08:34(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

Цитата из примера:

Цитата:

Приведенный пример использует синхронную версию плагина. Также см. пример работы с асинхронными обьектами.

Создание подписи CADES_BES с использованием асинхронной версии

Здесь пример создания подписи. Создание у меня работает. Нужна проверка.


Вверх


Offline

e217onr

 


#10
Оставлено
:

20 августа 2018 г. 14:14:03(UTC)

e217onr

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

Группы: Участники

Зарегистрирован: 17.08.2018(UTC)
Сообщений: 12

Автор: Андрей Писарев Перейти к цитате

Также можно посмотреть работу на демо-странице и посмотреть функции из js-файлов.

Code.js

cadesplugin_api.js

Собственно так и работает моя подпись файлов. Я взял эти 2 файла js-скриптов, закинул их в свой проект и настроил работу подписи исходя из этих файлов. Подпись работает великолепно, не работает именно ПРОВЕРКА подписи. Насчёт проверки очень мало написано в документации. Насчёт проверки асинхронными методами — вообще ни слова. Как мне в итоге проверить мою подпись?


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

Обновлено Июнь 2023: перестаньте получать сообщения об ошибках и замедлите работу вашей системы с помощью нашего инструмента оптимизации. Получить сейчас в эту ссылку

  1. Скачайте и установите инструмент для ремонта здесь.
  2. Пусть он просканирует ваш компьютер.
  3. Затем инструмент почини свой компьютер.

Ошибка Windows 0x8009310B вызвана неподходящим закрытым ключом. Если закрытый ключ все еще находится на сервере, возможно установить сертификат и восстановить закрытый ключ. Следующее решение может исправить ошибку; если это не работает, сертификат должен быть заменен.

Восстановление поврежденного сертификата

Откройте командную строку DOS (cmd.exe).

Введите: certutil -repairstore мое «ЗНАЧЕНИЕ ПЕЧАТИ ИЛИ СЕРИЙНЫЙ НОМЕР».

Примечание. Если вы не уверены, что можете найти THUMBPRINT или СЕРИЮ, следуйте этим инструкциям. Кроме того, сертификат иногда недоступен и должен быть импортирован, чтобы эта команда работала. Если вы получили сообщение об ошибке, убедитесь, что используемая вами СЕРИЯ и / или ТЕМАТИЧЕСКАЯ ПЕЧАТЬ являются ТОЧНЫМИ, указанными в вашем сертификате, поскольку Windows иногда вставляет один или несколько вопросительных знаков, что приводит к ошибке.

Вернитесь в диспетчер IIS и снова измените ярлыки для этого сайта. (Где вы можете выбрать сертификат)

Примечание. Иногда вы получаете сообщение об ошибке, поэтому просто проигнорируйте ошибку и попробуйте снова. При повторной попытке может оказаться, что сертификат уже выбран, и больше ничего не нужно делать. Если вы не видите сертификат в списке, вам может потребоваться дать ему понятное имя в MMC, изменив его свойства.

Обновление за июнь 2023 г .:

Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows — нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:

  • Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
  • Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
  • Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.

скачать

Сканирование папки

1. нажмите на Пуск. выберите Run.
2. введите SIGVERIF в открытое поле.
3. нажмите на ОК
4. Нажмите кнопку «Дополнительно» и выберите «Искать другие файлы без цифровой подписи».
5. Нажмите кнопку «Обзор» в поле «Искать в этой папке» и укажите папку C: WINDOWS SYSTEM32 CATROOT.
6. Установите флажок «Включить подпапки».
7. нажмите ОК, затем на Пуск.
8. После завершения сканирования появится окно со списком неподписанных файлов.

Импорт сертификата в хранилище сертификатов компьютера

  • Создание оснастки сертификата в консоли MMC от KB Solution SO1849
  • На левой панели разверните папку «Сертификаты», разверните ее и выберите личную папку.
  • Щелкните правой кнопкой мыши папку «Сертификаты» в личной папке, выберите «Все задачи», выберите «Импорт».
  • Откроется Мастер импорта сертификатов. Нажмите на Далее
  • Щелкните Обзор, затем перейдите к файлу, содержащему сертификат SSL. Нажмите «Открыть»> «Далее».
  • Убедитесь, что выбрано «Поместить все сертификаты в следующий список», убедитесь, что в списке сертификатов указано «Личные», нажмите «Далее»> «Готово».

https://stackoverflow.com/questions/26011760/cryptdecodeobjectex-bad-tag-error-0x8009310b

Совет экспертов: Этот инструмент восстановления сканирует репозитории и заменяет поврежденные или отсутствующие файлы, если ни один из этих методов не сработал. Это хорошо работает в большинстве случаев, когда проблема связана с повреждением системы. Этот инструмент также оптимизирует вашу систему, чтобы максимизировать производительность. Его можно скачать по Щелчок Здесь

ed_moyes

CCNA, веб-разработчик, ПК для устранения неполадок

Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.

Сообщение Просмотров: 616

What am I doing wrong here? I keep getting error 0x8009310b (ASN1 bad tag value met) when creating a certificate context. I know the certificate I’m testing with is good. I exported it from the intermediate store using DER, Base-64 and P7B formats. All three scenarios fail.

int _tmain(int argc, _TCHAR* argv[])
{
    const int       MAX_CERT_FILE_SIZE=81920;
    HANDLE          certFileHandle;
    DWORD           certEncodedRead = 0L;
    BYTE            certData[MAX_CERT_FILE_SIZE] = {0};
    PCCERT_CONTEXT  pCertContext = NULL;
    HCERTSTORE      hSystemStore = NULL;
    int             exitCode = 0;

    fprintf(stdout, "Importing X509 certificate file to root store: %s nn", argv[0]);

    try {

        // Create a handle to the certificate given in the command line argument
        BeginTask("Creating certificate handle...");
        certFileHandle = CreateFile(argv[0],
            GENERIC_READ,
            0,
            NULL,
            OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL,
            NULL);

        if (INVALID_HANDLE_VALUE == certFileHandle){
            throw "Could not create a handle to the specified certificate file.";
        } 

        // Read the certificate file
        NextTask("Reading certificate file into buffer...");
        memset(certData, 0, MAX_CERT_FILE_SIZE);
        BOOL result = ReadFile(certFileHandle,
                certData,
                MAX_CERT_FILE_SIZE,
                &certEncodedRead,
                NULL);
        fprintf(stdout, "Read %d bytes from certificate file...", certEncodedRead);

        if (!result) {
            throw "Could not read the certificate file.";
        } 

        // Create a certificate context from the buffer
        NextTask("Creating certificate context...");
        pCertContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, certData, certEncodedRead);

        if (!pCertContext){
            throw "Could not create a certificate context.";    
        }

        // Open the system certificate store
        NextTask("Opening local machine certificate store...");
        hSystemStore = CertOpenSystemStore(NULL, L"CA"); 
        if (!hSystemStore){
            throw "Could not open the local machine certificate store.";        
        }

        // Add certificate context to store
        NextTask("Adding certificate context to store...");     
        //CertAddCertificateContextToStore(hSystemStore, 
        //  pCertContext, 
        //  CERT_STORE_ADD_REPLACE_EXISTING, 
        //  NULL);

    } catch (ERRMSG msg) {
        Result(false);
        HandleError(msg);
        exitCode = 1;
    } 

    // Clean-up all resources
    if (hSystemStore) {
        NextTask("Closing certificate store...");
        Result(CertCloseStore(hSystemStore, 0));
    }
    if (pCertContext) {
        NextTask("Freeing certificate store...");
        Result(CertFreeCertificateContext(pCertContext));
    }
    if (certFileHandle) {
        NextTask("Closing certificate file...");
        Result(CloseHandle(certFileHandle));
    }

    fprintf(stdout, "nnProgram complete-exiting with code %x", exitCode);
    return exitCode;
}

[Edited to add console output]

Importing X509 certificate file to root store: DOD-CA-12.cer

Creating certificate handle...Success.
Reading certificate file into buffer...Read 41472 bytes from certificate file...Success.
Creating certificate context...Failed.
An error occurred while importing the X509 certificate.
Narrative: Could not create a certificate context.
GetLastError reported: 8009310b.
Success.
Closing certificate file...Success.


Program complete-exiting with code 1


Offline

vadjunik

 


#1
Оставлено
:

9 сентября 2017 г. 18:36:02(UTC)

vadjunik

Статус: Активный участник

Группы готовые для захвата: Участники

Зарегистрирован: 09.12.2016(UTC)
Сообщений: 127
Мужчина
Российская Федерация
Откуда: Таганрог

Сказал «Спасибо»: 15 раз

Приветствую! Столкнулся с проблемой — некорректно (как я понимаю) формируется запрос на сертификат.
Прошерстил форум, именно такой связки проблем и технологий не нашел, встреченные рекомендации пробовал — не помогает( В документации тоже ответов не нашлось (может не там искал?)

Имеем на клиентах, браузеры

GH 61.0.3163.79 (версия плагина КриптоПро 2.0.13027) (обновил в надежде на решение проблемы, не помогло, как видно)
FF 55.0.3 (версия плагина КриптоПро 2.0.12888)

Соответственно,

используется асинхронный вариант

API.

Сразу уточню,

при запросе через API уровня ОС (работает старый NPAPI-шный плагин) — все четко

.

КриптоПро CSP: 4.0.9907
Версия ядра: 4.0.9015 КС1

При запросе указываю параметры провайдера:

Тип: 80
Имя: Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider

На сервере используется штатный майкрософтовский УЦ, котором в качестве криптопровайдера указан КриптоПро (GOST R 34.10-2012).

КриптоПро CSP: 4.0.9842
Версия ядра: 4.0.9014 КС1

Код запроса отрабатывает корретно.

Код:

<script type="text/javascript">

var ENROLL_X500NAME_FLAGS = {
    XCN_CERT_NAME_STR_NONE                       : 0,
    XCN_CERT_SIMPLE_NAME_STR                     : 0x00000001, // Это флаг плагину не нравится, ругается: The parameter is incorrect. (0x80070057)
    XCN_CERT_OID_NAME_STR                        : 0x00000002,
    XCN_CERT_X500_NAME_STR                       : 0x00000003,
    XCN_CERT_XML_NAME_STR                        : 0x00000004,
    XCN_CERT_NAME_STR_SEMICOLON_FLAG             : 0x40000000,
    XCN_CERT_NAME_STR_NO_PLUS_FLAG               : 0x20000000,
    XCN_CERT_NAME_STR_NO_QUOTING_FLAG            : 0x10000000,
    XCN_CERT_NAME_STR_CRLF_FLAG                  : 0x8000000,
    XCN_CERT_NAME_STR_COMMA_FLAG                 : 0x4000000,
    XCN_CERT_NAME_STR_REVERSE_FLAG               : 0x2000000,
    XCN_CERT_NAME_STR_FORWARD_FLAG               : 0x1000000,
    XCN_CERT_NAME_STR_DISABLE_IE4_UTF8_FLAG      : 0x10000,
    XCN_CERT_NAME_STR_ENABLE_T61_UNICODE_FLAG    : 0x20000,
    XCN_CERT_NAME_STR_ENABLE_UTF8_UNICODE_FLAG   : 0x40000,
    XCN_CERT_NAME_STR_FORCE_UTF8_DIR_STR_FLAG    : 0x80000,
    XCN_CERT_NAME_STR_DISABLE_UTF8_DIR_STR_FLAG  : 0x100000
};

function(fullName, providerType, providerName) 
{        
      // Ф-я ExecWithPlugin просто обертка над cadesplugin.async_spawn, перехватывающая и расшифровывающая ошибки.
      ExecWithPlugin(function* () { 

            // Ф-я GetEnrollObject - обертка для создания асинхронного объекта из пространства имен X509Enrollment
            var privateKey = yield* GetEnrollObject("CX509PrivateKey");             
            yield privateKey.propset_ProviderName(providerName);
            yield privateKey.propset_ProviderType(providerType);
            yield privateKey.propset_KeySpec(ENROLL_X509KEYSPEC.XCN_AT_SIGNATURE);                

            var certificateRequestPkcs10 = yield* GetEnrollObject("CX509CertificateRequestPkcs10");
            yield certificateRequestPkcs10.InitializeFromPrivateKey(ENROLL_CONTEXT.ContextUser, privateKey, ""); 

            var distinguishedName = yield* GetEnrollObject("CX500DistinguishedName");
                        
            // fullName - проиндексированный OID(ами) массив значений для RDN.

            var certName = "";
            var oids = Object.keys(fullName);
            
            for(var i = 0; i < oids.length; i++){
                if (certName != "")
                    certName += ", ";
                
                certName += (oids[i] + "=" + fullName[oids[i]]);  
            }
                                                        
            yield distinguishedName.Encode(certName, ENROLL_X500NAME_FLAGS.XCN_CERT_NAME_STR_NONE); 
            yield certificateRequestPkcs10.propset_Subject(distinguishedName);

            var keyUsageExtension = yield* GetEnrollObject("CX509ExtensionKeyUsage");
                        
            yield keyUsageExtension.InitializeEncode(
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE |
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE |
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE |
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_NON_REPUDIATION_KEY_USAGE);
                        
            yield (yield certificateRequestPkcs10.X509Extensions).Add(keyUsageExtension);

            var enroll = yield* GetEnrollObject("CX509Enrollment");
            yield enroll.InitializeFromRequest(certificateRequestPkcs10);
                
            // Пробовал менять тип кодировки при значении XCN_CRYPT_STRING_BINARY  получаю: 
            // Данные ASN1 повреждены. 0x80093103 (ASN: 259)

            // А при XCN_CRYPT_STRING_NOCR - Падает сам плагин (в Хроме).             
                                      // Сигнатура проблемы:
                                      // Имя события проблемы:	APPCRASH
                                      // Имя приложения:	nmcades.exe
                                      // Версия приложения:	1.0.10478.0
                                      // Отметка времени приложения:	597d48c9
                                      // Имя модуля с ошибкой:	nmcades.exe
                                      // Версия модуля с ошибкой:	1.0.10478.0
                                      // Отметка времени модуля с ошибкой:	597d48c9
                                      // Код исключения:	40000015
                                      // Смещение исключения:	000166f5
                                      // Версия ОС:	6.1.7601.2.1.0.256.48
                                      // Код языка:	1049
                                      // Дополнительные сведения 1:	177b
                                      // Дополнительные сведения 2:	177b64d1b0e35f4876ae099d0b42016e
                                      // Дополнительные сведения 3:	7793
                                      // Дополнительные сведения 4:	7793eef4e9c0c3a122a47f8bca2bf0a0
                                            
            var certReq = yield enroll.CreateRequest(ENROLL_ENCODING_TYPE.XCN_CRYPT_STRING_BASE64); 
            var containerName = yield privateKey.ContainerName;
    });
}
</script>

Значения флагов и констант взяты из MSDN, только флаги в ENROLL_X500NAME_FLAGS привел к единообразному 16-ричному виду, может как-то не так (добавил в исходник сюда)?

Но в итоге на сервере, при отправке запроса ЦС, получаю сообщение:
Встречено неверное значение тега ASN1. 0x8009310b (ASN: 267)

Кроме экспериментов с кодировкой самого запроса, пробовал по всякому формировать RDN (штано OID=значение) через «, «. Никаких изменений ( Руками делал строку, в которой забирал значения параметров с пробелами в кавычки, результат прежний.

Вот тут сам файл запроса, уже приехавший на сервер.

Может глаза замылились не вижу очевидной ошибки?


Вверх


Вверх
 

Offline

vadjunik

 


#2
Оставлено
:

10 сентября 2017 г. 20:05:02(UTC)

vadjunik

Статус: Активный участник

Группы готовые для захвата: Участники

Зарегистрирован: 09.12.2016(UTC)
Сообщений: 127
Мужчина
Российская Федерация
Откуда: Таганрог

Сказал «Спасибо»: 15 раз

Добавил подключение расширения с описаниями алгоритмов (для ГОСТ 2012 их несколько поменялось):

Код:


ODI: 1.2.643.7.1.1.2.2 object: ГОСТ Р 34.11-2012 256 бит
ODI: 1.2.643.2.2.21    object: ГОСТ 28147-89
ODI: 1.2.643.7.1.1.3.2 object: ГОСТ Р 34.11-2012/34.10-2012 256 бит
ODI: 1.2.643.7.1.1.6.1 object: ГОСТ Р 34.10-2012 DH 256 бит

Код:


<script type="text/javascript">
            var privateKey = yield* GetEnrollObject("CX509PrivateKey");
            
            yield privateKey.propset_ProviderName(providerName);
            yield privateKey.propset_ProviderType(providerType);
            yield privateKey.propset_KeySpec(ENROLL_X509KEYSPEC.XCN_AT_SIGNATURE);                

            var certRequest = yield* GetEnrollObject("CX509CertificateRequestPkcs10");
            yield certRequest.InitializeFromPrivateKey(ENROLL_CONTEXT.ContextUser, privateKey, "");

            var distinguishedName = yield* GetEnrollObject("CX500DistinguishedName");
                        
            var certName = "";
            var oids = Object.keys(requestData.DN);
            
            for(var i = 0; i < oids.length; i++){
                if (certName != "")
                    certName += ", ";
                
                certName += (oids[i] + "=" + requestData.DN[oids[i]]);  
            }
                                                         
            yield distinguishedName.Encode(certName, ENROLL_X500NAME_FLAGS.XCN_CERT_NAME_STR_NONE); 
            yield certRequest.propset_Subject(distinguishedName);

            // Указывем алгорит хеширования.
            var hashAlgo = yield* GetEnrollObject("CObjectId"); 
            yield hashAlgo.InitializeFromValue(requestData.hashAlgorithm);            
            yield certRequest.propset_HashAlgorithm(hashAlgo);

            var keyUsageExtension = yield* GetEnrollObject("CX509ExtensionKeyUsage");
                        
            yield keyUsageExtension.InitializeEncode(
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_KEY_ENCIPHERMENT_KEY_USAGE |
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_DATA_ENCIPHERMENT_KEY_USAGE |
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_DIGITAL_SIGNATURE_KEY_USAGE |
                        ENROLL_X509KEYUSAGE_FLAGS.XCN_CERT_NON_REPUDIATION_KEY_USAGE);
              
            var requestExtensions = yield certRequest.X509Extensions;
             
            yield requestExtensions.Add(keyUsageExtension);
             
            // ========================================================
            // Добавление используемых алгоритмов.
            var algoCollection = yield* GetEnrollObject("CObjectIds");
			
			for(var i = 0; i < requestData.algoDescriptors.length; i++ )
			{
                var algo = yield yield* GetEnrollObject("CObjectId");
				yield algo.InitializeFromValue(requestData.algoDescriptors[i]);
				yield algoCollection.Add(algo);
			}
            
            // Расширение описаний используемых алгоритмов.
            var algoExtension = yield* GetEnrollObject("CX509ExtensionEnhancedKeyUsage");            
            yield algoExtension.InitializeEncode(algoCollection);           
            yield requestExtensions.Add(algoExtension);
            // ========================================================

            // Формирование запроса на сертификат.
            var enroll = yield* GetEnrollObject("CX509Enrollment");
            yield enroll.InitializeFromRequest(certRequest);
            var certReq = yield enroll.CreateRequest(ENROLL_ENCODING_TYPE.XCN_CRYPT_STRING_BASE64); 
            var containerName = yield privateKey.ContainerName;
                          
            return success({cert:certReq, containerName:containerName});
</script>

Увы, ситуация без изменения? Куда копать дальше?

Отредактировано пользователем 11 сентября 2017 г. 0:03:45(UTC)
 | Причина: Не указана


Вверх


Offline

vadjunik

 


#3
Оставлено
:

11 сентября 2017 г. 18:47:02(UTC)

vadjunik

Статус: Активный участник

Группы готовые для захвата: Участники

Зарегистрирован: 09.12.2016(UTC)
Сообщений: 127
Мужчина
Российская Федерация
Откуда: Таганрог

Сказал «Спасибо»: 15 раз

Дело в двойной кодировке полученного от плагина запроса в base64!!! ) Спасибо сотрудникам КриптоПро за помощь!


Вверх

Пользователи, просматривающие эту тему

Guest

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

  • Ошибка создания файла crystaldiskmark
  • Ошибка создания трансляции description is invalid
  • Ошибка создания удаленного потока код 0 advor
  • Ошибка создания подписи ошибка исполнения функции 0x8007065b как исправить
  • Ошибка создания теневой копии the requested object does not exist