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

Уведомление

Icon
Error

35 Страницы«<333435
Опции
К последнему сообщению К первому непрочитанному
Offline Артём Макаров  
#341 Оставлено : 18 октября 2023 г. 17:20:53(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: alexT_krd Перейти к цитате
Добрый день.
Есть приложение, которое работает в Docker под Linux Ubuntu, написано на netcoreapp3.1 с использованием corefx.
Оно выполняет следующий код:
using X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine, OpenFlags.ReadWrite);
X509Certificate2 cert = new X509Certificate2(byte[]);
store.Add(cert);
С ним проблем нет, ставятся как сертификаты GOST так и RSA.

Перевёл его на net6.0 и LibCore.Linux.2023.8.9.1.nupkg (КриптоПро CSP 5.0.12900). X509Store изменился на CpX509Store:
LibCore.Initializer.Initialize();
CpX509Store store = new CpX509Store(StoreName.Root, StoreLocation.LocalMachine, OpenFlags.ReadWrite);
X509Certificate2 cert = new X509Certificate2(byte[]);
store.Add(cert);
И теперь при установке RSA сертификата получаю следующую ошибку:
System.NullReferenceException: Object reference not set to an instance of an object.
at LibCore.Internal.Cryptography.Pal.StorePal.Add(ICertificatePal certificate)
at LibCore.Security.Cryptography.X509Certificates.CpX509Store.Add(X509Certificate2 certificate)
Сертификаты GOST ставятся нормально.
В чем может быть проблема? Нужны сертификаты как GOST так и с RSA.


Добрый день.

В Libcore поддержку RSA провайдеров через CSP пока не реализовывали. Т.е. воспользоваться RSA через провайдер csp сейчас не выйдет.

Для RSA должны работать все "родные" сценарии.
Если задача установить сертификат для дальнейшего использования:
попробуйте установить сертификат в хранилище dotnet'а через dotnet-certificate-tool (https://github.com/gsoft-inc/dotnet-certificate-tool) или любым другим способом (установится именно в родное хранилище дотнета, а не в хранилище csp).
Дальше можно будет использовать данное хранилище через X509Store (не CpX509Store) для получения RSA сертификатов.

Если задача просто однократно ставить сертификаты в хранилище csp - то сейчас возможно стоит просто вызвать bash скрипт через ProcessStartInfo + Process, который вызовет "certmgr -inst -store <STORE_NAME> -pfx -pin <PIN> -file <путь к файлу с сертификатом>".
Техническую поддержку оказываем тут
Наша база знаний
Offline alexT_krd  
#342 Оставлено : 18 октября 2023 г. 17:43:55(UTC)
alexT_krd

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

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

Задача как раз в том, чтобы через C# ставить много корневых сертификатов как GOST так и с RSA. А потом использовать их. Поэтому вариант с dotnet-certificate-tool не подойдет. Поддержка RSA в Libcore планируется?

Отредактировано пользователем 18 октября 2023 г. 17:44:47(UTC)  | Причина: Не указана

Offline Артём Макаров  
#343 Оставлено : 19 октября 2023 г. 8:27:14(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: alexT_krd Перейти к цитате
Задача как раз в том, чтобы через C# ставить много корневых сертификатов как GOST так и с RSA. А потом использовать их. Поэтому вариант с dotnet-certificate-tool не подойдет. Поддержка RSA в Libcore планируется?


Планируется, но в среднесрочной перспективе в рамках добавления поддержки 8.0.
Техническую поддержку оказываем тут
Наша база знаний
Offline VitalyKrasovsky  
#344 Оставлено : 20 ноября 2023 г. 15:35:17(UTC)
VitalyKrasovsky

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

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

Коллеги из КриптоПро, подскажите, с чем связана ошибка "System.PlatformNotSupportedException: Operation is not supported on this platform" при использовании LibCore под Windows?

Установлено:
1. Операционная система Windows 10 20H2 (на Windows 11 также проверяли - ошибка воспроизводится).
2. Последняя на текущий момент версия КриптоПро CSP 5.0.12997 (на сертифицированной версии 5.0.12000 также проверяли - ошибка воспроизводится).
3. .NET6 SDK (включая runtime).
4. Последний на текущий момент nuget-пакет LibCore.Windows.2023.8.9.1.nupkg (подключен через %appdata%/NuGet/nuget.config).
5. Создано консольное приложение, целевой фреймворк net6.0 (тег TargetFramework в csproj-файле имеется).
6. В самом начале LibCore.Initializer.Initialize() добавлено.

При попытке создать экземпляр хранилища сертификатов в первой же строчке получаем вышеупомянутую ошибку?
Цитата:
using (var store = new CpX509Store(StoreName.Root, StoreLocation.CurrentUser))
{
...
}


С чем может быть связана проблема?
Offline Артём Макаров  
#345 Оставлено : 20 ноября 2023 г. 15:37:49(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 54 раз в 53 постах
Автор: VitalyKrasovsky Перейти к цитате
Коллеги из КриптоПро, подскажите, с чем связана ошибка "System.PlatformNotSupportedException: Operation is not supported on this platform" при использовании LibCore под Windows?

Установлено:
1. Операционная система Windows 10 20H2 (на Windows 11 также проверяли - ошибка воспроизводится).
2. Последняя на текущий момент версия КриптоПро CSP 5.0.12997 (на сертифицированной версии 5.0.12000 также проверяли - ошибка воспроизводится).
3. .NET6 SDK (включая runtime).
4. Последний на текущий момент nuget-пакет LibCore.Windows.2023.8.9.1.nupkg (подключен через %appdata%/NuGet/nuget.config).
5. Создано консольное приложение, целевой фреймворк net6.0 (тег TargetFramework в csproj-файле имеется).
6. В самом начале LibCore.Initializer.Initialize() добавлено.

При попытке создать экземпляр хранилища сертификатов в первой же строчке получаем вышеупомянутую ошибку?
Цитата:
using (var store = new CpX509Store(StoreName.Root, StoreLocation.CurrentUser))
{
...
}


С чем может быть связана проблема?


На windows нужно использовать стандартный класс X509Store.
Техническую поддержку оказываем тут
Наша база знаний
Offline oleg.patrushev  
#346 Оставлено : 2 апреля 2024 г. 13:32:38(UTC)
oleg.patrushev

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

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

Добрый день!

Разбираюсь с подписанием PDF документов ЭЦП. Сейчас у нас имеется рабочий код на .NET Framework и нужно перевести его на .NET 6 (в дальнейшем на 8й), а развернуть в linux докер контейнере.
Сейчас проблема с тем чтобы инициализировать сертификат в linux и получить его из кода.

Для теста имеются тестовые сертификаты в формате .pfx.
Также в контейнере установлен КрптоПРО CSP.
Использую библиотеку LibCore Windows\Linux версии 2024.1.10.1

1. Первый вариант - установка сертификата через криптопро certmgr, сертификат ставится, но я не могу получить его из кода, использую CpX509Store для получения сертификатов, но список сертификатов пустой
устанавливаю так:
Код:
/opt/cprocsp/bin/amd64/certmgr -install -pfx -file /app/cert.pfx -pin "1" -store uMy -silent

Пробовал также и -store mMy

в коде получаю хранилище сертифкатов следующим образом:
Код:
var store = new( StoreName.My, StoreLocation.CurrentUser );
store.Open( OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly );


В результате store.Certificates пустой.

2. Второй вариант - инициализация сертификата из файла:
Код:
return X509CertificateExtensions.Create(
    file, // string path of byte[] data
    (string) null, // password
    CpX509KeyStorageFlags.CspNoPersistKeySet );


Этот вариант работает на Windows, но на CentOS возникает ошибка Segmentation fault

Моя цель получить каким то образом сертификат из кода .NET приложения - либо из хранилища либо из файла
Offline Артём Макаров  
#347 Оставлено : 2 апреля 2024 г. 13:40:59(UTC)
Артём Макаров

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

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

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

Разбираюсь с подписанием PDF документов ЭЦП. Сейчас у нас имеется рабочий код на .NET Framework и нужно перевести его на .NET 6 (в дальнейшем на 8й), а развернуть в linux докер контейнере.
Сейчас проблема с тем чтобы инициализировать сертификат в linux и получить его из кода.

Для теста имеются тестовые сертификаты в формате .pfx.
Также в контейнере установлен КрптоПРО CSP.
Использую библиотеку LibCore Windows\Linux версии 2024.1.10.1

1. Первый вариант - установка сертификата через криптопро certmgr, сертификат ставится, но я не могу получить его из кода, использую CpX509Store для получения сертификатов, но список сертификатов пустой
устанавливаю так:
Код:
/opt/cprocsp/bin/amd64/certmgr -install -pfx -file /app/cert.pfx -pin "1" -store uMy -silent

Пробовал также и -store mMy

в коде получаю хранилище сертифкатов следующим образом:
Код:
var store = new( StoreName.My, StoreLocation.CurrentUser );
store.Open( OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly );


В результате store.Certificates пустой.

2. Второй вариант - инициализация сертификата из файла:
Код:
return X509CertificateExtensions.Create(
    file, // string path of byte[] data
    (string) null, // password
    CpX509KeyStorageFlags.CspNoPersistKeySet );


Этот вариант работает на Windows, но на CentOS возникает ошибка Segmentation fault

Моя цель получить каким то образом сертификат из кода .NET приложения - либо из хранилища либо из файла


Добрый день.

При работе через хранилище - убедитесь, что ставите сертификаты тому же пользователю, из под которого потом запускаете приложение. Возможно выполняет установку из под рута ставите для него.

По pfx - попробуйте указать в проекте (csproj)

Код:
    <PropertyGroup>
        <TieredCompilation>false</TieredCompilation>
    </PropertyGroup>




Более подробно по возможной проблеме тут - https://github.com/Crypt...#issuecomment-1516097005
Техническую поддержку оказываем тут
Наша база знаний
Offline oleg.patrushev  
#348 Оставлено : 2 апреля 2024 г. 16:50:40(UTC)
oleg.patrushev

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

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

Автор: Артём Макаров Перейти к цитате
Автор: oleg.patrushev Перейти к цитате
Добрый день!

Разбираюсь с подписанием PDF документов ЭЦП. Сейчас у нас имеется рабочий код на .NET Framework и нужно перевести его на .NET 6 (в дальнейшем на 8й), а развернуть в linux докер контейнере.
Сейчас проблема с тем чтобы инициализировать сертификат в linux и получить его из кода.

Для теста имеются тестовые сертификаты в формате .pfx.
Также в контейнере установлен КрптоПРО CSP.
Использую библиотеку LibCore Windows\Linux версии 2024.1.10.1

1. Первый вариант - установка сертификата через криптопро certmgr, сертификат ставится, но я не могу получить его из кода, использую CpX509Store для получения сертификатов, но список сертификатов пустой
устанавливаю так:
Код:
/opt/cprocsp/bin/amd64/certmgr -install -pfx -file /app/cert.pfx -pin "1" -store uMy -silent

Пробовал также и -store mMy

в коде получаю хранилище сертифкатов следующим образом:
Код:
var store = new( StoreName.My, StoreLocation.CurrentUser );
store.Open( OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly );


В результате store.Certificates пустой.

2. Второй вариант - инициализация сертификата из файла:
Код:
return X509CertificateExtensions.Create(
    file, // string path of byte[] data
    (string) null, // password
    CpX509KeyStorageFlags.CspNoPersistKeySet );


Этот вариант работает на Windows, но на CentOS возникает ошибка Segmentation fault

Моя цель получить каким то образом сертификат из кода .NET приложения - либо из хранилища либо из файла


Добрый день.

При работе через хранилище - убедитесь, что ставите сертификаты тому же пользователю, из под которого потом запускаете приложение. Возможно выполняет установку из под рута ставите для него.

По pfx - попробуйте указать в проекте (csproj)

Код:
    <PropertyGroup>
        <TieredCompilation>false</TieredCompilation>
    </PropertyGroup>




Более подробно по возможной проблеме тут - https://github.com/Crypt...#issuecomment-1516097005


Спасибо, вариант с TieredCompilation сработал
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
35 Страницы«<333435
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.