【问题标题】:Simplest way to generate a X509Certificate2 for testing purposes为测试目的生成 X509Certificate2 的最简单方法
【发布时间】:2020-07-24 16:40:18
【问题描述】:

我正在测试我的软件,并使用此功能在启动时(在内存中)生成随机证书:

using System.Security.Cryptography.X509Certificates;
using System.Security.Cryptography;

    public X509Certificate CreateX509Certificate2(string certName = "Default cert")
    {
        var ecdsa = ECDsa.Create();
        var rsa = RSA.Create();
        var req = new CertificateRequest($"cn={certName}", rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
        var cert = req.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(1));

        return new X509Certificate2(cert.Export(X509ContentType.Pfx, "password"), "password");
    }

这种方法有什么缺点吗?证书“真实”是否足以用于测试目的?

我发现的几乎所有示例都使用了 BouncyCastle 等第三方库,但我看不出使用它的目的?

(我知道有效的证书是由受信任的 CA 签署的,但我会在软件处于测试阶段时进行这项工作)

【问题讨论】:

    标签: c# .net-core x509certificate2


    【解决方案1】:

    许多示例会为此使用 Bouncy Castle,因为 CertificateRequest 是最近才添加到 .NET 中的。

    该类创建用于 .NET Core 单元测试的大部分证书,它绝对可以创建语法上有效的证书。

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多