Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Sijil Ditandatangani Sendiri dalam C#?

Bagaimana untuk Mencipta Sijil Ditandatangani Sendiri dalam C#?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-13 10:03:43611semak imbas

How to Create Self-Signed Certificates in C#?

Buat sijil yang ditandatangani sendiri menggunakan C#

Dalam C#, anda boleh menjana sijil yang ditandatangani sendiri dengan mudah menggunakan kelas System.Security.Cryptography.X509Certificates.CertificateRequest. Kaedah ini menyediakan cara yang mudah dan khusus platform untuk mencipta sijil yang sesuai untuk tujuan penyulitan tempatan.

Proses penciptaan sijil

mula-mula menunjukkan objek ECDsa, yang mewakili pasangan kunci asimetri. Kemudian, buat contoh CertificateRequest dengan maklumat sijil yang diperlukan, termasuk nama pemohon, algoritma kunci dan algoritma cincang.

Langkah terakhir ialah mencipta sijil yang ditandatangani sendiri dengan memanggil kaedah CreateSelfSigned. Kaedah ini menetapkan sijil dengan tarikh mula dan tamat serta menjana sijil X.509 yang sah.

Untuk menyimpan kunci peribadi dalam sijil PFX (PKCS #12), gunakan Export(X509ContentType.Pfx, "密码") untuk mengeksport sijil. Ini membolehkan kunci peribadi dilindungi dengan kata laluan.

Selain itu, dengan mengeksport sijil menggunakan Export(X509ContentType.Cert) anda boleh mencipta fail CER berkod Base64 yang mengandungi kunci awam sahaja. Ini berguna jika anda ingin berkongsi sijil secara terbuka atau menggunakan semula kunci awam daripada aplikasi lain.

Contoh kod berikut menunjukkan keseluruhan proses:

<code class="language-csharp">using System;
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

public class CertificateUtil
{
    public 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>

Contoh ini menjana sijil yang ditandatangani sendiri dengan kunci peribadi disimpan dalam format PFX dan kunci awam disimpan dalam format CER berkod Base64. Sijil ini boleh diimport ke dalam stor sijil Windows atau digunakan untuk penyulitan data atau penyahsulitan dalam aplikasi tempatan.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Sijil Ditandatangani Sendiri dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn