【问题标题】:Self Signed RSA Certificate export private key parameters exception in .NET Core 3.1 [Windows 10 Pro OS].NET Core 3.1 [Windows 10 Pro OS] 中的自签名 RSA 证书导出私钥参数异常
【发布时间】:2020-08-30 13:59:28
【问题描述】:

我创建了一个自签名的 RSA 证书并将私钥存储为 .pfx 文件。然后从我的 .Net Core 3.1 代码中,我尝试使用 .pfx 文件实例化 X509Certificate2 对象。 X509Certificate2 实例已成功创建,但从代码“certificate2.GetRSAPrivateKey().ExportParameters(true)”得到一个异常为“不支持请求的操作”。

X509Certificate2 certificate2 = new X509Certificate2(privateKeyData, _privateKeyPwd, X509KeyStorageFlags.Exportable);
RSAParameters rSAParameters = certificate2.GetRSAPrivateKey().ExportParameters(true);

例外: Internal.Cryptography.CryptoThrowHelper.WindowsCryptographicException: '不支持请求的操作'。

你能帮帮我吗?

编辑:rSAParameters 将用于解密加密的对称密钥。

rsaProvider.ImportParameters(rSAParameters);
byte[] encryptedSymmetricKey = Convert.FromBase64String(dataKey);
// Decrypt using OAEP padding.
byte[] decryptedSymmetricKey = rsaProvider.Decrypt(encryptedSymmetricKey, fOAEP: true);

【问题讨论】:

  • 导出参数的目的是什么?
  • @Crypt32 我需要执行操作“RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider(); rsaProvider.ImportParameters(rSAParameters);”
  • 你需要RSACryptoServiceProvider的目的是什么?你能把你的代码展示在你打算在哪里使用它吗?
  • @Crypt32 我已经用代码 sn-ps 更新了问题。
  • 我相信,旧版RSACryptoServiceProvider 默认为 OAEP SHA1。

标签: rsa x509certificate2 encryption-asymmetric .net-core-3.1 windows-10-desktop


【解决方案1】:

当我看到类似 rsaKey.ExportParameters(true) 的内容时,在 99.999% 的情况下,这表明代码中的设计/模式不佳。

其实你不需要导出和重新导入参数,就这么简单:

X509Certificate2 certificate2 = new X509Certificate2(privateKeyData, _privateKeyPwd, X509KeyStorageFlags.Exportable);
RSA privateKey = certificate2.GetRSAPrivateKey();
// decrypt data
byte[] decryptedSymmetricKey = privateKey.Decrypt(encryptedSymmetricKey, RSAEncryptionPadding.OaepSHA1);

【讨论】:

  • 没错,但有时你确实想导出私有参数/密钥。我很高兴您解决了 OP 的问题,但如果您解决了 why 调用 GetRSAPrivateKey().ExportParameters(true) 被抛出的根本原因,那就太好了。
  • 在给定的情况下,它是一个 XY 问题,所以不需要解决不相关的问题。如果您有特定问题,请启动您自己的线程。
猜你喜欢
  • 2011-02-08
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
相关资源
最近更新 更多