Загрузить X509Certificate2 из raw: GetPrivateKey: набор ключей не существует - PullRequest
0 голосов
/ 08 октября 2019

Я использую .NET Core 2.2 в Linux и Windows, я не хочу использовать магазины. Я пытаюсь добавить разрешения для IIS или Все для тестирования на "C: \ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys", он не работает .. Файл создан, и я могу открыть его! Но почему моя программа не может этого сделать?

X509KeyStorageFlags flags = X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable;
X509Certificate2 cert = new X509Certificate2(rawCert, "myPassword", flags);

var pk =  cert.GetRSAPrivateKey(); // Exception

Я получаю это исключение:

Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException HResult = 0x80090016 Сообщение = набор ключей не существует
Source = System.Security.Cryptography.Csp Арборесценция для обработки: в Internal.NativeCrypto.CapiHelper.CreateProvHandle (параметры CspParameters, логический randomKeyContainer) в System.Security.Cryptography.RSACryPervice.Hervice.Security_Service.Security_Service.Security_Service.SecuritySignServiceService_ServiceService_ServiceServiceService_ServiceService_ServiceService_ServiceServiceService.RSACryptoServiceProvider.get_SafeKeyHandle () в System.Security.Cryptography.RSACryptoServiceProvider..ctor (Int32 keySize, CspParameters параметры, логическое значение useDefaultKeySize) в System.Security.Cryptography.RSryptoCatePerviceTerviceTerviceTerviceTerviceTerviceTervice (). <> c.b__66_0 (CspParameters csp) в Internal.Cryptography.Pal.CertificatePal.GetPrivateKey [T] (Func 2 createCsp, Func 2 createCng) в Internal.Cryptography.Pal.CertificatePal.GetRSAPrivateKey () в Internal.Cryptography.Pal.CertificateExtensionsCommon.GetPrivateKey [T] (X509Certificate2 сертификат, Predicate`1 совпадений Constraints) в System.Security.Cryptography.X509Certificates.RSACertificateExtensions.GetRSAP2jectCateject (ConjectCateject (Conject). ] args) в ...

...