开发人员经常需要为各种目的创建自签名证书,例如本地加密而无需保护通信。在C#中,可以使用.NET 4.7.2中引入的直接方法来完成此任务。
使用System.Security.Cryptography.X509Certificates.CertificateRequest
类,您可以轻松创建自签名证书。以下代码片段演示了如何操作:
<code class="language-csharp">using System; using System.IO; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; public class CertificateUtil { static void MakeCert() { var ecdsa = ECDsa.Create(); // 生成非对称密钥对 var req = new CertificateRequest("cn=foobar", ecdsa, HashAlgorithmName.SHA256); var cert = req.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(5)); // 创建包含私钥的PFX (PKCS #12) 文件 File.WriteAllBytes("c:\temp\mycert.pfx", cert.Export(X509ContentType.Pfx, "P@55w0rd")); // 创建Base64编码的CER (仅包含公钥) 文件 File.WriteAllText("c:\temp\mycert.cer", "-----BEGIN CERTIFICATE-----\r\n" + Convert.ToBase64String(cert.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks) + "\r\n-----END CERTIFICATE-----"); } }</code>
此代码使用ECDSa生成非对称密钥对,并创建一个CertificateRequest
对象。随后,它调用CreateSelfSigned
方法生成自签名证书。证书可以导出到包含私钥的PFX文件或仅包含公钥的Base64编码CER文件。
通过这种简化的方法,开发人员可以避免P/Invoke的复杂性,并在C#中方便地创建自签名证书。
以上是如何用C#轻松生成自签名证书?的详细内容。更多信息请关注PHP中文网其他相关文章!