X509Certificate2.GetECDsaPrivateKey error keyHandle null value - PullRequest
0 голосов
/ 27 мая 2020

Я сгенерировал pfx-файл со следующими командами

openssl ec -in apple-private-key.pem -pubout -out apple-public-key.pem
openssl req -new -key apple-private-key.pem -x509 -nodes -subj "/CN=apple.my.com" -out certificat.pem
openssl pkcs12 -in certificat.pem -inkey apple-private-key.pem -export -out certificate.pfx

и когда я пытаюсь загрузить его только с флагом X509KeyStorageFlags.MachineKeySet, этот флаг мне необходим для выполнения на windows сервер с IIS

// only if add MachineKeySet flag
var certificate = new X509Certificate2("apple-certificate.pfx", "password", X509KeyStorageFlags.MachineKeySet); 
var ecDsa = certificate.GetECDsaPrivateKey(); // <<   Error keyHandle Null ?
var key = new ECDsaSecurityKey(ecDsa) { KeyId = _keyId };
var signingCredentials = new SigningCredentials(key, "ES256", _keyId);

Ошибка

System.ArgumentNullException
  HResult=0x80004003
  Message=La valeur ne peut pas être null.
Nom du paramètre : keyHandle
  Source=System.Core
  Arborescence des appels de procédure :
   à System.Security.Cryptography.CngKey.Open(SafeNCryptKeyHandle keyHandle, CngKeyHandleOpenOptions keyHandleOpenOptions)
   à System.Security.Cryptography.X509Certificates.ECDsaCertificateExtensions.GetECDsaPrivateKey(X509Certificate2 certificate) 

1 Ответ

0 голосов
/ 29 мая 2020

Он должен работать с учетной записью локального администратора, чтобы это работало.

Спасибо, Crypt32, jdweng

https://paulstovell.com/x509certificate2/

...