C#快速生成一个自签名证书

.net 4.7+ 和 .net core 中自带了一个类 CertificateRequest, 用于构造证书请求。

// generate asymmetric key pair
// var rsa = RSA.Create();
// var req = new CertificateRequest("cn=younname", rsa, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
var ecdsa = ECDsa.Create(); 
var req = new CertificateRequest("cn=younname", ecdsa, HashAlgorithmName.SHA256);

var cert = req.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(10));

// Create PFX (PKCS #12) with private key
File.WriteAllBytes("mycert.pfx", cert.Export(X509ContentType.Pfx, "123456"));

// Create Base 64 encoded CER (public key only)
File.WriteAllText("mycert.cer",
                "-----BEGIN CERTIFICATE-----\r\n"
                + Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks)
                + "\r\n-----END CERTIFICATE-----");

已禁用评论。