@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.
  • Вопрос задан
  • 2266 просмотров
Пригласить эксперта
Ответы на вопрос 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 для поиска ключей и прочей работы, то есть если нет криптопро появятся стандартные виндозные запросы. Могу поискать исходники если нужно, думаю они еще живые.
Ответ написан
KargoZ
@KargoZ
linux &
Нет. Отсутсвие криптопровайдера == отсутсвие алгоритма шифрования.
Ответ написан
alex1t
@alex1t
.net developer
Насколько я помню своё общение с CryptoPro, то без его установки не выйдет. Если вы попробуете посмотреть установленный сертификат через certmgr, то увидите, что он не валидный. Это происходит из-за того, что сертификаты CryptoPro подписываются ГОСТ-овскими алгоритмами, которых нет по умолчанию в Windows. В этом и суть крипто-провайдера. Он предоставляет новый алгоритм шифрования в систему (стандартными средствами). Так что только после его установки сама Windows сможет определить алгоритм используемый для подписи и показать сертификат как валидный. Соответственно и ваш код должен бы заработать после.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы