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

Уведомление

Icon
Error

35 Страницы«<2324252627>»
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей Врагов  
#241 Оставлено : 22 августа 2022 г. 15:02:07(UTC)
Андрей Врагов

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день!

В моем коде есть работа с запросами на сертификат. Причем в двух вариантах. В первом случае происходит работа в лице оператора с подготовленным ранее в другом коде pkcs10 с последующим добавлением к нему доп. NameValue пары с последующим подписыванием собственным ключом оператора УЦ. Этот вариант работает с CoreFx без проблем.
Во втором варианте необходимо создать ключевой контейнер, создать собственный pkcs10 на базе открытого ключа из созданной ключевой пары.
В старом приложении под .NET Framework мы использовали COM-библиотеку и все было хорошо. Как быть без ее использования? Только не отсылайте к pInvoke. Звать нативные функции CAPI не хочется, ибо незря Microsoft в своих классах натолкал SafeHandle'ов и прочих прелестей. А без детального понимания их работы много сюрпризов потом м.б.
И еще момент. Экспериментируя с разными кусками разного кода ;о), появился вариант собрать pkcs10 некоторым способом. Но есть одно но. Требуется инстанциировать объект типа PublicKey из пространства имен System.Security.Cryptography.X509Certificates. Конструктору на вход надо подать в качестве одного из параметров закодированный объект типа SubjectPublicKeyInfo. Но метод ExportSubjectPublicKeyInfo объекта типа Gost3410_2012_256CryptoServiceProvider выдает ошибку: "Method not supported. Derrived class must override."
Стало быть метод в классе не реализован. Как быть?
Offline Артём Макаров  
#242 Оставлено : 22 августа 2022 г. 15:38:57(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: Андрей Врагов Перейти к цитате
Добрый день!

В моем коде есть работа с запросами на сертификат. Причем в двух вариантах. В первом случае происходит работа в лице оператора с подготовленным ранее в другом коде pkcs10 с последующим добавлением к нему доп. NameValue пары с последующим подписыванием собственным ключом оператора УЦ. Этот вариант работает с CoreFx без проблем.
Во втором варианте необходимо создать ключевой контейнер, создать собственный pkcs10 на базе открытого ключа из созданной ключевой пары.
В старом приложении под .NET Framework мы использовали COM-библиотеку и все было хорошо. Как быть без ее использования? Только не отсылайте к pInvoke. Звать нативные функции CAPI не хочется, ибо незря Microsoft в своих классах натолкал SafeHandle'ов и прочих прелестей. А без детального понимания их работы много сюрпризов потом м.б.
И еще момент. Экспериментируя с разными кусками разного кода ;о), появился вариант собрать pkcs10 некоторым способом. Но есть одно но. Требуется инстанциировать объект типа PublicKey из пространства имен System.Security.Cryptography.X509Certificates. Конструктору на вход надо подать в качестве одного из параметров закодированный объект типа SubjectPublicKeyInfo. Но метод ExportSubjectPublicKeyInfo объекта типа Gost3410_2012_256CryptoServiceProvider выдает ошибку: "Method not supported. Derrived class must override."
Стало быть метод в классе не реализован. Как быть?


Добрый день. А классы CertificateRequest не пробовали смотреть? Не подходят для данного сценария?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Врагов  
#243 Оставлено : 22 августа 2022 г. 16:39:06(UTC)
Андрей Врагов

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Артём Макаров Перейти к цитате

Добрый день. А классы CertificateRequest не пробовали смотреть? Не подходят для данного сценария?


Пробовал. Но увы. Может подскажите, как и какой конструктор позвать и что передать из того, чем я располагаю после генерации ключей и создания контейнера?
В принципе, у меня есть замечательный класс Pkcs10CertificateRequestEncoder. Но ему необходимо проинициализировать свойство типа PublicKey.

Отредактировано пользователем 22 августа 2022 г. 16:45:24(UTC)  | Причина: Не указана

Offline Павел-ИС  
#244 Оставлено : 22 августа 2022 г. 22:35:55(UTC)
Павел-ИС

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

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

Сказал(а) «Спасибо»: 2 раз
Здравствуйте!
На платформе .NET Framework с КриптоПро .NET у нас применяются библиотеки Interop.CAdESCOM и Interop.CAPICOM.
В частности, применяются методы CadesSignedData.EnhanceCades и CadesSignedData.SignCades.
Какие аналоги этих методов есть при использовании КриптоПро .NET Core на Linux?
Offline Артём Макаров  
#245 Оставлено : 23 августа 2022 г. 9:16:05(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: Андрей Врагов Перейти к цитате
Автор: Артём Макаров Перейти к цитате

Добрый день. А классы CertificateRequest не пробовали смотреть? Не подходят для данного сценария?


Пробовал. Но увы. Может подскажите, как и какой конструктор позвать и что передать из того, чем я располагаю после генерации ключей и создания контейнера?
В принципе, у меня есть замечательный класс Pkcs10CertificateRequestEncoder. Но ему необходимо проинициализировать свойство типа PublicKey.


Если я правильно понял вводные и задачу - то можно сделать как то так

Код:
        static void F()
        {
            // открываем контейнер ключа заданного типа по имени
            var provider =
                new Gost3410_2012_256CryptoServiceProvider(
                    new CspParameters(
                        80,
                        "",
                        "\\\\.\\HDIMAGE\\G2012256"));

            using (provider)
            {
                // создаём нужный запрос через класс
                var certificateRequest = new CertificateRequest(
                    "cn=test",
                    (Gost3410_2012_256)provider,
                    HashAlgorithmName.Gost3411_2012_256);

                certificateRequest.CertificateExtensions.Add(
                    new X509KeyUsageExtension(
                        X509KeyUsageFlags.DigitalSignature
                        | X509KeyUsageFlags.NonRepudiation
                        | X509KeyUsageFlags.KeyEncipherment,
                        false));

                var oidCollection = new OidCollection();
                // Проверка подлинности клиента (1.3.6.1.5.5.7.3.2)
                oidCollection.Add(new Oid("1.3.6.1.5.5.7.3.2"));

                certificateRequest.CertificateExtensions.Add(
                new X509EnhancedKeyUsageExtension(
                    oidCollection,
                    true));

                certificateRequest.CertificateExtensions.Add(
                new X509SubjectKeyIdentifierExtension(certificateRequest.PublicKey, false));

                // Pkcs запрос
                var reqest = certificateRequest.CreateSigningRequest();
                // Открытый ключ
                var publicKey = certificateRequest.PublicKey;
            }
        }

Отредактировано пользователем 23 августа 2022 г. 9:20:08(UTC)  | Причина: Не указана

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
Андрей Врагов оставлено 25.08.2022(UTC)
Offline Артём Макаров  
#246 Оставлено : 23 августа 2022 г. 9:18:32(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: Павел-ИС Перейти к цитате
Здравствуйте!
На платформе .NET Framework с КриптоПро .NET у нас применяются библиотеки Interop.CAdESCOM и Interop.CAPICOM.
В частности, применяются методы CadesSignedData.EnhanceCades и CadesSignedData.SignCades.
Какие аналоги этих методов есть при использовании КриптоПро .NET Core на Linux?


Добрый день.

CAdESCOM не входит в состав КриптоПро.Net.
На linux в настоящий момент возможно использование Cades только через P\Invoke csp, managed оболочек нет.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
Павел-ИС оставлено 23.08.2022(UTC)
Offline Андрей Врагов  
#247 Оставлено : 23 августа 2022 г. 13:50:36(UTC)
Андрей Врагов

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Артём Макаров Перейти к цитате

Если я правильно понял вводные и задачу - то можно сделать как то так

Да, Артем, это соответствует ожиданиям. Кстати, я уже сам соорудил нечто подобное используя ваш код из DSS. :о)
В любом случае это полезная информация. Спасибо большое.
Offline Андрей Врагов  
#248 Оставлено : 25 августа 2022 г. 15:10:49(UTC)
Андрей Врагов

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

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

Сказал(а) «Спасибо»: 1 раз
Артем, а как можно добавить шаблон серта (oid=1.3.6.1.4.1.311.20.2) в сам pkcs10 на базе вашего примера? Или стандартно у Microsoft нет такого класса для такого расширения?
В pkcs7 я умею добавлять в виде SignedAttribute, но мне также необходимо уметь добавлять и в pkcs10. Ктстати, насколько я понимаю, если подавать запрос на ЦР УЦ через ИВП, то его надо подавать именно в pkcs7, дважды подписав соответствующей подписью субъекта имеющего права на олобрение запроса в ЦР. Это так?
Offline Артём Макаров  
#249 Оставлено : 25 августа 2022 г. 18:55:41(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: Андрей Врагов Перейти к цитате
Артем, а как можно добавить шаблон серта (oid=1.3.6.1.4.1.311.20.2) в сам pkcs10 на базе вашего примера? Или стандартно у Microsoft нет такого класса для такого расширения?
В pkcs7 я умею добавлять в виде SignedAttribute, но мне также необходимо уметь добавлять и в pkcs10. Ктстати, насколько я понимаю, если подавать запрос на ЦР УЦ через ИВП, то его надо подавать именно в pkcs7, дважды подписав соответствующей подписью субъекта имеющего права на олобрение запроса в ЦР. Это так?


Класс CertificateRequest никак не расширялся, кроме поддержки гостов.
Посмотрите в сторону создания своего X509Extension через конструктор, который затем передадите в certificateRequest.CertificateExtensions.Add. Возможно заведётся.

По уц\цр ничего подсказать, увы, не могу.
Техническую поддержку оказываем тут
Наша база знаний
Offline Higen  
#250 Оставлено : 29 августа 2022 г. 11:08:40(UTC)
Higen

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

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

Подскажите пожалуйста, при публикации проекта под линукс выдает ошибку:
обнаружено несколько выходных файлов публикации с одним и тем же относительным путем: C:\Users\Sergey\.nuget\packages\runtime.linux-x64.microsoft.private.corefx.netcoreapp\4.7.0-dev.21370.1\runtimes\linux-x64\lib\netcoreapp3.1\System.Security.Cryptography.Cng.dll, E:\Users\Старый рабочий стол\ЭТОС\projects\DotnetCoreSampleProject-master\DotnetCoreSampleProject\runtime-release-linux\System.Security.Cryptography.Cng.dll.
Под Windows нормально собралось, а под линукс почему-то тянет файл dll из двух мест.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
35 Страницы«<2324252627>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.