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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Minin  
#1 Оставлено : 14 марта 2023 г. 17:04:46(UTC)
Minin

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

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

Сказал(а) «Спасибо»: 3 раз
Здравствуйте.

Пытаюсь подписать строку на стороне сервера с помощью сертификата с закрытым ключом, который хранится в реестре (или этим же сертификатом, но выгруженным в формате .pfx вместе с закрытым ключом).
Целевая платформа проекта <TargetFramework>net5.0</TargetFramework>. Решение используется и под Windows, и под Linux.

// Получение сертификата
public static X509Certificate2 FindCertificate(string thumbprint, StoreLocation storeLocation)
{
var store = new X509Store(StoreName.My, storeLocation);
store.Open(OpenFlags.ReadOnly);
try
{
return store.Certificates
.Find(X509FindType.FindByThumbprint, thumbprint, validOnly: false)
.Cast<X509Certificate2>()
.FirstOrDefault(c => c.HasPrivateKey);
}
finally
{
store.Close();
}
}

Для подписания строки использую следующий код и получаю ошибку "Could not determine signature algorithm for the signer certificate."

ContentInfo contentInfo = new ContentInfo(dataToSign);
SignedCms signedCms = new SignedCms(contentInfo, true);
CmsSigner cmsSigner = new CmsSigner(certificateForReqXml);
signedCms.ComputeSignature(cmsSigner); // Ошибка: Could not determine signature algorithm for the signer certificate.
byte[] signatureResult = signedCms.Encode();
return signatureResult;

Пытался подключить dll из поста "https://www.cryptopro.ru/forum2/default.aspx?g=posts&m=125242#post125242", но ошибка остаётся (вероятно, из за разницы целевой платформы).

Можно ли создать отдельную библиотеку, которая бы работала под Windows и Linux, на целевой платформе netstandard2.0 (или другой подходящей под Windows и Linux одновременно), в которую бы были включены все необходимые зависимости, чтобы можно было подключить dll в проекте и использовать её методы?

Или может быть есть другой способ получить откреплённую подпись к строке?

Offline Артём Макаров  
#2 Оставлено : 16 марта 2023 г. 9:57:15(UTC)
Артём Макаров

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

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

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 63 раз в 59 постах
Добрый день.

Существующие решения есть для

netcore3.1 https://github.com/Crypt.../DotnetCoreSampleProject

и

net6.0 https://github.com/CryptoPro/libcore

net 5.0 не поддерживаем.

Вопросы создания библиотек под разные платформы на net6.0 недавно обсуждался тут - https://github.com/CryptoPro/libcore/issues/10
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Артём Макаров за этот пост.
Minin оставлено 16.03.2023(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.