编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

在C#中生成私钥PEM文件和签名PEM证书

wxchong 2024-07-25 13:52:13 开源技术 49 ℃ 0 评论

在C#中生成私钥PEM文件和签名PEM证书可以通过BouncyCastle库来实现。需要使用NuGet包管理器安装BouncyCastle库。在Visual Studio中,你可以在“工具”->“NuGet包管理器”->“程序包管理器控制台”中执行以下命令来安装BouncyCastle库:

Install-Package BouncyCastle

使用以下代码来生成私钥PEM文件和签名PEM证书:

using System;
using System.IO;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Generators;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
using Org.BouncyCastle.X509;

class Program
{
    static void Main(string[] args)
    {
        // 生成RSA密钥对
        RsaKeyPairGenerator generator = new RsaKeyPairGenerator();
        generator.Init(new KeyGenerationParameters(new SecureRandom(), 2048));
        AsymmetricCipherKeyPair keyPair = generator.GenerateKeyPair();

        // 将私钥写入PEM文件
        using (TextWriter textWriter = new StreamWriter("privateKey.pem"))
        {
            PemWriter pemWriter = new PemWriter(textWriter);
            pemWriter.WriteObject(keyPair.Private);
        }

        // 创建自签名证书
        X509V3CertificateGenerator certificateGenerator = new X509V3CertificateGenerator();
        certificateGenerator.SetSerialNumber(BigInteger.ValueOf(1));
        certificateGenerator.SetIssuerDN(new X509Name("CN=MySelfSignedCert"));
        certificateGenerator.SetSubjectDN(new X509Name("CN=MySelfSignedCert"));
        certificateGenerator.SetNotBefore(DateTime.UtcNow.Date);
        certificateGenerator.SetNotAfter(DateTime.UtcNow.Date.AddYears(1));
        certificateGenerator.SetPublicKey(keyPair.Public);
        certificateGenerator.SetSignatureAlgorithm("SHA256WithRSA");
        X509Certificate certificate = certificateGenerator.Generate(keyPair.Private as RsaPrivateCrtKeyParameters);

        // 将签名证书写入PEM文件
        using (TextWriter textWriter = new StreamWriter("certificate.pem"))
        {
            PemWriter pemWriter = new PemWriter(textWriter);
            pemWriter.WriteObject(certificate);
        }
    }
}

这里我使用BouncyCastle库生成了一个2048位的RSA密钥对,并将私钥和签名证书分别写入了privateKey.pem和certificate.pem文件中。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表