Задать вопрос
@critica1err0r

Можно ли при работе с сертификатом с закрытым ключом(etoken) обойтись без установки криптопровайдера(CryptoPro CSP) на сервер?

Вопрос заключается в следующем, можно ли при работе с сертификатом с закрытым ключом(etoken) обойтись без установки криптопровайдера(CryptoPro CSP) на сервер?

Для выполнения этой задачи был сделан экспорт сертификата с закрытым ключом через CryptoPRO CSP, в результате получился контейнер формата .pfx. Далее сертификат из созданного контейнера был установлен в хранилище.

Но при обращении к этому сертификату
X509Store store = new X509Store( "MY",StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
X509Certificate2Collection found = store.Certificates
    .Find(X509FindType.FindBySerialNumber, "XXX", false);
X509Certificate2 certificate = found[0];

свойство certificate.PrivateKey == null.
  • Вопрос задан
  • 2268 просмотров
Подписаться 3 Оценить Комментировать
Ответ пользователя Ai Lab К ответам на вопрос (3)
vpuhoff
@vpuhoff
Программист в свободное от работы время
Вероятно проблема с сертификатом, т.к. вот пример из msdn:
// Find the certificate we’ll use to sign
RSACryptoServiceProvider csp = null;
foreach (X509Certificate2 cert in my.Certificates)
{
if (cert.Subject.Contains(certSubject))
{
// We found it.
// Get its associated CSP and private key
csp = (RSACryptoServiceProvider)cert.PrivateKey;
}
}
if (csp == null)
{
throw new Exception(“No valid cert was found”);
}
И null в PrivateKey говорит только об отсутствии этого ключа, не больше ни меньше
Уже писал подобное, алгоритм ГОСТ есть у .net из коробки и внешние библиотеки использовать не обязательно, криптопро использовать тоже не обязательно, .net пользуется api windows для поиска ключей и прочей работы, то есть если нет криптопро появятся стандартные виндозные запросы. Могу поискать исходники если нужно, думаю они еще живые.
Ответ написан