【问题标题】:X509Certificate2.GetECDsaPrivateKey error keyHandle null valueX509Certificate2.GetECDsaPrivateKey 错误 keyHandle 空值
【发布时间】:2020-05-27 15:43:56
【问题描述】:

我使用以下命令生成了一个 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 加载它时 这个标志对我来说是必需的,用于在带有 IIS 的 Windows 服务器上执行

// 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) 

【问题讨论】:

  • 我认为填充模式是错误的。请参阅:stackoverflow.com/questions/21357323/…
  • 不,因为如果删除 X509KeyStorageFlags.MachineKeySet ,它的工作或设置 X509KeyStorageFlags.UserKeySet 它的工作
  • 您的应用程序必须在本地系统或本地管理员帐户下执行才能使X509KeyStorageFlags.MachineKeySet 标志起作用。
  • 谢谢,是的,我必须使用本地管理员帐户运行,它可以工作。

标签: c# .net cryptography x509certificate x509certificate2


【解决方案1】:

它必须使用本地管理员帐户运行才能正常工作。

谢谢,Crypt32,jdweng​​p>

https://paulstovell.com/x509certificate2/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2017-07-14
    相关资源
    最近更新 更多