C#自簽章憑證建立指南:全面解析
在各種場景中,特別是本地加密,都需要建立自簽名憑證。雖然可以使用Crypt32.dll的P/Invoke實現,但這種方法可能複雜且繁瑣。本文探討了一種更直接、無需P/Invoke的方法,它使用System.Security.Cryptography.X509Certificates命名空間。
在.NET 4.7.2及更高版本中,CertificateRequest類別提供了一種簡化的自簽名憑證產生方法。
建立自簽名憑證
以下程式碼片段示範了建立自簽名憑證的過程:
<code class="language-csharp">using System; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; public class CertificateUtil { public static void CreateSelfSignedCertificate() { // 生成非对称密钥对。 ECDsa ecdsa = ECDsa.Create(); // 创建证书请求。 CertificateRequest request = new CertificateRequest("cn=foobar", ecdsa, HashAlgorithmName.SHA256); // 创建自签名证书。 X509Certificate2 certificate = request.CreateSelfSigned(DateTimeOffset.Now, DateTimeOffset.Now.AddYears(5)); // 将证书导出为包含私钥的PFX (PKCS #12) 格式。 byte[] pfxBytes = certificate.Export(X509ContentType.Pfx, "P@55w0rd"); File.WriteAllBytes("mycert.pfx", pfxBytes); // 将证书导出为Base64编码的CER格式(仅包含公钥)。 string cerContents = "-----BEGIN CERTIFICATE-----\r\n" + Convert.ToBase64String(certificate.Export(X509ContentType.Cert), Base64FormattingOptions.InsertLineBreaks) + "\r\n-----END CERTIFICATE-----"; File.WriteAllText("mycert.cer", cerContents); } }</code>
此方法使用橢圓曲線數位簽章演算法 (ECDSA) 和 SHA-256 雜湊產生自簽章憑證。證書有效期為五年,可匯出為PFX (PKCS #12) 和CER格式。
總結
.NET中的System.Security.Cryptography.X509Certificates命名空間提供了一種直接的機制,用於在C#中建立自簽名憑證。本文概述了產生、匯出和儲存憑證的過程,為本地加密需求提供了一種無需P/Invoke且跨平台的解決方案。
以上是如何在不使用 P/Invoke 的情況下在 C# 中輕鬆建立自簽名憑證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!