Статус: Новичок
Группы: Участники
Зарегистрирован: 27.08.2018(UTC) Сообщений: 7
|
При попытке построить цепочку сертификата , получаем Heap corruption. Изначально ошибка появилась на версии двухлетней давности , обновились до 4.0.9944 проблема осталась. Есть два разных разных стектрейса. Первый : Код:ntdll.dll!RtlReportCriticalFailur
ntdll.dll!RtlpHeapHandleError
ntdll.dll!RtlpLogHeapFailure
ntdll.dll!RtlFreeHeap
AcLayers.dll!NS_FaultTolerantHeap::APIHook_RtlFreeHeap()
KERNELBASE.dll!LocalFree
crypt32.dll!CryptVerifyCertificateSignatureEx()
crypt32.dll!ChainGetSubjectStatus()
crypt32.dll!CCertIssuerList::CreateElement()
crypt32.dll!CCertIssuerList::AddIssuer()
crypt32.dll!CChainPathObject::FindAndAddIssuersByMatchType()
crypt32.dll!CChainPathObject::FindAndAddIssuers(class CChainCallContext *,void *,void *)
crypt32.dll!CChainPathObject::CChainPathObject(class CChainCallContext *,unsigned long,void *,void *,int &,int &)
crypt32.dll!ChainCreatePathObject()
crypt32.dll!CChainPathObject::FindAndAddIssuersFromStoreByMatchType()
crypt32.dll!CChainPathObject::FindAndAddIssuersByMatchType()
crypt32.dll!CChainPathObject::FindAndAddIssuers(class CChainCallContext *,void *,void *)
crypt32.dll!CChainPathObject::CChainPathObject(class CChainCallContext *,unsigned long,void *,void *,int &,int &)
crypt32.dll!ChainCreatePathObject()
crypt32.dll!CCertChainEngine::CreateChainContextFromPathGraph()
crypt32.dll!CCertChainEngine::GetChainContext()
crypt32.dll!CertGetCertificateChain()
Второй во вложении. Также добавил во вложения сертификат на котором воспроизводится (воспроизводится не всегда с первого раза).  dump_stacktrace.txt (6kb) загружен 12 раз(а). BE856D7A3C983DDB9C18B03480D7FA9B81AE416F.rar (2kb) загружен 22 раз(а).Отредактировано модератором 5 октября 2018 г. 15:03:45(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,400  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
Судя по всему, проблема в сертификате: в Субъекте в поле T - оно длиннее положенных 64 символов. И проблема в коде Windows. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2007(UTC) Сообщений: 152 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
В сертификате написано:
Sign tool: ПАКМ "КриптоПро HSM" (версия 1.0) Sign tool certificate: Сертификат соответствия № СФ/121-3145 от 17.06.2017 CA tool: ПАК "Удостоверяющий центр "КриптоПро УЦ" (версия 2.0) CA tool certificate: Сертификат соответствия № СФ/128-2881 от 30.12.2016
Как УЦ смог выдать сертифкат, если длина значений некоторых полей в нем превышает ограничения?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,400  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,400  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
certutil -verify .cer проблема воспроизводится?
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.08.2018(UTC) Сообщений: 7
|
Автор: Максим Коллегин  А какая ОС точно?
Windows Server 2016 и 2012 Отредактировано пользователем 27 августа 2018 г. 14:30:26(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,400  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 719 раз в 623 постах
|
С большой вероятностью проблема в вашем приложении, сможете предоставить законченный тест - мы постараемся помочь.
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 28.12.2007(UTC) Сообщений: 152 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 1 раз в 1 постах
|
certutil тоже падает  Snimok ehkrana ot 2018-08-27 15-42-56.png (139kb) загружен 39 раз(а).
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.08.2017(UTC) Сообщений: 2 
|
Иногда не падает, но всё равно завершается ошибкой CertUtil: -verify command FAILED: 0x80092004 (-2146885628 CRYPT_E_NOT_FOUND) CertUtil: Cannot find object or property.
|
|
|
|
Статус: Эксперт
Группы: Участники
Зарегистрирован: 05.03.2015(UTC) Сообщений: 1,602  Откуда: Иркутская область Сказал(а) «Спасибо»: 110 раз Поблагодарили: 395 раз в 366 постах
|
Автор: Demonix  Как УЦ смог выдать сертифкат, если длина значений некоторых полей в нем превышает ограничения? Скорее всего это из-за кодировки - один кириллический символ может занимать 2 или 3 байта при кодировании в utf-8, а пробелы, латинские буквы и спецсимволы занимают 1 байт. Для получения точного размера в символах нужно вызывать отдельную функцию. В большинстве функций работы с буферами используется размер в байтах. Отдельные программы просто выделяют буфер на максимальный размер (от 64*3 до 64*6 байт - смотря на какую версию Юникода ориентировались) и сравнивают размер в байтах, не проверяя размер поля в символах. При этом возможно незначительное превышение длины поля за счет меньшей длины отдельных символов (пробелов). В данном случае, в должности 6 пробелов и всего 72 символа, то есть максимальный буфер для 64 символов превышает актуальный размер данных для 64 символов и в эту разницу вписали еще 8 символов. Другой вопрос, что обычно в формах ввода длина строки понимается в символах и там как правило стоит ограничение на 64 символа.
Например, когда мы получали аналогичный сертификат, оператор УЦ нам написал письмо с вопросом как мы желаем сократить должность из 2 частей, превышающую ограничение в 64 символа и мы оставили только первую часть из должности. Замечу, нет большой необходимости целиком переписывать название организации в поле должность, оно не для того предназначено. Кроме того, в запросах в Росреестр есть поля ФИО представителя, которые они требуют заполнить с 1 января 2018 года даже если должность и ФИО указаны в сертификате. Для выполнения этого требования мы пишем должность перед фамилией.
Гораздо больше удивляет отсутствие бита "неотрекаемости" в поле "Использование ключа" сертификата. Другие отличия в пределах допустимого: индекс в STREET (для индекса есть отдельный оид), цифра перед регионом (необязательна уже пару лет), втолкнута защита электронной почты без "Возможности S/MIME" (старые почтовые клиенты не смогут использовать), наличие явно указанных политик применения (первый раз вижу), наличие класса КС1 (для любых запросов СМЭВ как-то слабовато, но для запросов в Росреестр пойдет). Насчет OCSP не уверен, возможно тоже не в том разделе. Цитата:Иногда не падает, но всё равно завершается ошибкой На Win7 32-разрядной запустил 5 раз certutil -verify с данным сертификатом и все 5 раз успешно. Отредактировано пользователем 28 августа 2018 г. 6:14:56(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close