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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Евгений Пономаренко  
#1 Оставлено : 12 июля 2019 г. 11:09:16(UTC)
Евгений Пономаренко

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

Группы: Участники
Зарегистрирован: 03.05.2012(UTC)
Сообщений: 171
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 46 раз
Поблагодарили: 23 раз в 19 постах
Добрый день.
Проблема следующая.
Есть код, выполняющийся на сервере, обращается к контейнеру Криптопро, на токене или в регистри-на результат не влияет
там присутствует вызов CertSetCertificateContextProperty(CERT_KEY_PROV_INFO_PROP_ID)
Все прекрасно работает в среде .Net framework 4.6 (4.7 тоже проверено)
Портировали код на .Net Core 2. все прекрасно работает до некоторых пор, затем с носителя бесследно исчезает ключевой контейнер.
Проблема была локализована - вызов этой функции, ориентировочно на 900-й раз. Происходит удаление контейнера с носителя.
Написан код (в аттаче), который 100% воспроизводит проблему как на серверных платформах, так и на 7/8/10.
Проверено на CSP 4.0 R3,R4
Просьба по возможности помочь разобраться, что мы делаем не так.
csp-error-projects.zip (8kb) загружен 14 раз(а).
Offline Максим Коллегин  
#2 Оставлено : 15 июля 2019 г. 12:52:44(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Постараемся разобраться.
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#3 Оставлено : 15 июля 2019 г. 13:03:04(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Попробовал 5.0 R0 и 4.0 R4 на Windows 10 - не воспроизводится.
Какие еще криптографические приложения установлены?

Отредактировано пользователем 15 июля 2019 г. 13:03:36(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#4 Оставлено : 15 июля 2019 г. 13:05:53(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Поторопился, на 1856 итерации исчез.

Отредактировано пользователем 15 июля 2019 г. 13:06:38(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#5 Оставлено : 15 июля 2019 г. 13:26:54(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Это проделки .NET Core:
https://github.com/dotne...ws/Native/SafeHandles.cs
Код:

    internal sealed class SafeCertContextHandleWithKeyContainerDeletion : SafeCertContextHandle
    {
        protected sealed override bool ReleaseHandle()
        {
            using (SafeCertContextHandle certContext = Interop.crypt32.CertDuplicateCertificateContext(handle))
            {
                DeleteKeyContainer(certContext);
            }
            base.ReleaseHandle();
            return true;
        }

Отредактировано пользователем 15 июля 2019 г. 13:30:39(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#6 Оставлено : 15 июля 2019 г. 13:40:02(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
К этому вызову приводит уродливый конструктор
Код:
  public X509Certificate(byte[] data)
        {
            if (data != null && data.Length != 0)
            {
                // For compat reasons, this constructor treats passing a null or empty data set as the same as calling the nullary constructor.
                using (var safePasswordHandle = new SafePasswordHandle((string)null))
                {
                    Pal = CertificatePal.FromBlob(data, safePasswordHandle, X509KeyStorageFlags.DefaultKeySet);
                }
            }
        }
Знания в базе знаний, поддержка в техподдержке
Offline Максим Коллегин  
#7 Оставлено : 15 июля 2019 г. 13:44:23(UTC)
Максим Коллегин

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

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,374
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 32 раз
Поблагодарили: 704 раз в 613 постах
Проблему можно обойти, вызвав конструктор вот так:
Код:
var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);

Отредактировано пользователем 15 июля 2019 г. 13:44:59(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в техподдержке
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
Евгений Пономаренко оставлено 24.07.2019(UTC)
Offline cross  
#8 Оставлено : 16 июля 2019 г. 10:58:42(UTC)
Анатолий Беляев

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

Группы: Администраторы, Участники
Зарегистрирован: 24.11.2009(UTC)
Сообщений: 965
Откуда: Crypto-Pro

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 174 раз в 152 постах
Еще можно посмотреть на наш форк CoreFx c поддержкой ГОСТ уже на уровне .NET кода. https://github.com/CryptoProLLC/corefx
Техническую поддержку оказываем тут.
Наша база знаний.
Наша страничка в Instagram.
Offline Евгений Пономаренко  
#9 Оставлено : 24 июля 2019 г. 7:36:00(UTC)
Евгений Пономаренко

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

Группы: Участники
Зарегистрирован: 03.05.2012(UTC)
Сообщений: 171
Откуда: Екатеринбург

Сказал(а) «Спасибо»: 46 раз
Поблагодарили: 23 раз в 19 постах
Автор: Максим Коллегин Перейти к цитате
Проблему можно обойти, вызвав конструктор вот так:
Код:
var certificate = new X509Certificate2(certResult, new System.Security.SecureString(), X509KeyStorageFlags.PersistKeySet);


Спасибо! Сохраним в нашу базу знаний :)
Offline golinski  
#10 Оставлено : 1 августа 2019 г. 17:40:11(UTC)
golinski

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

Группы: Участники
Зарегистрирован: 01.08.2019(UTC)
Сообщений: 2

Сказал(а) «Спасибо»: 1 раз
Автор: cross Перейти к цитате
Еще можно посмотреть на наш форк CoreFx c поддержкой ГОСТ уже на уровне .NET кода. https://github.com/CryptoProLLC/corefx

у вас случайно нет какой-то хотя бы минимальной инфы как поднять ваш форк чтобы потестировать?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.