Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Автор: 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 <путь к файлу с сертификатом>". |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 18.10.2023(UTC) Сообщений: 2 Откуда: Краснодар
|
Задача как раз в том, чтобы через C# ставить много корневых сертификатов как GOST так и с RSA. А потом использовать их. Поэтому вариант с dotnet-certificate-tool не подойдет. Поддержка RSA в Libcore планируется? Отредактировано пользователем 18 октября 2023 г. 17:44:47(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Автор: alexT_krd Задача как раз в том, чтобы через C# ставить много корневых сертификатов как GOST так и с RSA. А потом использовать их. Поэтому вариант с dotnet-certificate-tool не подойдет. Поддержка RSA в Libcore планируется? Планируется, но в среднесрочной перспективе в рамках добавления поддержки 8.0. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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)) { ... } С чем может быть связана проблема?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Автор: 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. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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 приложения - либо из хранилища либо из файла
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 20.02.2017(UTC) Сообщений: 216
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 62 раз в 58 постах
|
Автор: 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 |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 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 сработал
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 15.05.2024(UTC) Сообщений: 2
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,391 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 715 раз в 620 постах
|
Если речь идёт о сертификации ФСБ, то нет. Если речь о зрелости продукта, то использовать можно, продукт достаточно стабильный. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close