【问题标题】:How can I add a private key to X509Certificate2 after I have already added the public key?已添加公钥后,如何将私钥添加到 X509Certificate2?
【发布时间】:2012-01-15 16:16:39
【问题描述】:

我的步骤是:

  1. 使用公钥创建X509Certificate2

    X509Certificate2 clientCertificate = new X509Certificate2("public key certificate blob as byte[]");
    
  2. 如何将私钥 blob 加载到 clientCertificate

【问题讨论】:

  • 你有什么样的 blob?他们来自哪里?
  • 会不会?我的公钥是 Base64 格式的字符串。我将此字符串转换为字节数组。私钥是公钥的非对称密钥。私钥与公钥 (Base64) 格式相同,我喜欢将其添加到我的 X509Certificate

标签: c# .net certificate rsa x509


【解决方案1】:

您似乎无法仅使用 .net 框架工具导入 RSA 私钥。

看看这个帖子How to read a PEM RSA private key from .NET

【讨论】:

  • 不起作用...我猜关键不是 RSACryptoServiceProvider。我需要一个通用的解决方案来解决这个问题。我的问题是 - 我正在使用 WLAN 配置,当我的用户配置无线配置文件时,他在一个文件中给我公钥,在另一个文件中给我私钥。
  • BTW - 证书是 RSA 证书。但是当我执行下一行时 - csp.ImportCspBlob(privateKeyBlob); ,我遇到了一个例外...... :(
  • 你能发一下吗?以及使用什么文件格式作为私钥容器?
  • 我无法发布私钥 :(.
  • 哦,不!我的意思是异常文本!您写道:“但是当我执行下一行 - csp.ImportCspBlob(privateKeyBlob); 时,我遇到了一个异常...... :(”。你能发布异常详细信息吗?
【解决方案2】:

以防万一像我这样的人在搜索如何从 pem fil/私钥生成 X509Certificate2 时看到这篇旧帖子:

.Net 5.0 框架对此有一个非常简化的方法:

var certPem = File.ReadAllText("cert.pem");
var eccPem = File.ReadAllText("ecc.pem");
var cert = X509Certificate2.CreateFromPem(certPem, eccPem);

(来源:https://www.scottbrady91.com/C-Sharp/PEM-Loading-in-dotnet-core-and-dotnet

【讨论】:

    【解决方案3】:

    另见:How to import PKCS#8 RSA privateKey (created by OpenSSL) in C#

    它包含一个指向 Mono 源代码的链接,可以读取 PKCS#8 / PEM 文件并从中返回一个 RSA 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2017-09-20
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多