Guide de création de certificats auto-signés C# : analyse complète
Dans divers scénarios, notamment le chiffrement local, il est nécessaire de créer des certificats auto-signés. Bien qu'il soit possible d'utiliser l'implémentation P/Invoke de Crypt32.dll, cette méthode peut être complexe et fastidieuse. Cet article explore une méthode plus directe, sans P/Invoke, utilisant l'espace de noms System.Security.Cryptography.X509Certificates.
Dans .NET 4.7.2 et versions ultérieures, la classe CertificateRequest fournit une méthode simplifiée de génération de certificats auto-signés.
Créer un certificat auto-signé
L'extrait de code suivant illustre le processus de création d'un certificat auto-signé :
<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>
Cette méthode utilise l'algorithme de signature numérique à courbe elliptique (ECDSA) et le hachage SHA-256 pour générer un certificat auto-signé. Le certificat est valable cinq ans et peut être exporté aux formats PFX (PKCS #12) et CER.
Résumé
L'espace de noms System.Security.Cryptography.X509Certificates dans .NET fournit un mécanisme simple pour créer des certificats auto-signés en C#. Cet article décrit le processus de génération, d'exportation et de stockage des certificats, fournissant ainsi une solution multiplateforme sans P/Invoke pour vos besoins de chiffrement locaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!