Rumah > pembangunan bahagian belakang > C++ > Bagaimana Mudah Membuat Sijil Ditandatangani Sendiri dalam C# Tanpa P/Invoke?

Bagaimana Mudah Membuat Sijil Ditandatangani Sendiri dalam C# Tanpa P/Invoke?

Linda Hamilton
Lepaskan: 2025-01-13 08:36:42
asal
145 orang telah melayarinya

How to Easily Create Self-Signed Certificates in C# Without P/Invoke?

Panduan Mencipta Sijil Ditandatangani Sendiri C#: Analisis Komprehensif

Dalam pelbagai senario, terutamanya penyulitan tempatan, adalah perlu untuk mencipta sijil yang ditandatangani sendiri. Walaupun ada kemungkinan untuk menggunakan pelaksanaan P/Invoke Crypt32.dll, kaedah ini boleh menjadi rumit dan membosankan. Artikel ini meneroka kaedah yang lebih langsung, tanpa P/Invoke menggunakan ruang nama System.Security.Cryptography.X509Certificates.

Dalam .NET 4.7.2 dan lebih baru, kelas CertificateRequest menyediakan kaedah ringkas untuk menjana sijil yang ditandatangani sendiri.

Buat sijil yang ditandatangani sendiri

Coretan kod berikut menunjukkan proses mencipta sijil yang ditandatangani sendiri:

<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>
Salin selepas log masuk

Kaedah ini menggunakan Elliptic Curve Digital Signature Algorithm (ECDSA) dan pencincangan SHA-256 untuk menjana sijil yang ditandatangani sendiri. Sijil ini sah selama lima tahun dan boleh dieksport ke format PFX (PKCS #12) dan CER.

Ringkasan

Ruang nama System.Security.Cryptography.X509Certificates dalam .NET menyediakan mekanisme mudah untuk mencipta sijil yang ditandatangani sendiri dalam C#. Artikel ini menggariskan proses menjana, mengeksport dan menyimpan sijil, menyediakan penyelesaian merentas platform tanpa P/Invoke kepada keperluan penyulitan tempatan anda.

Atas ialah kandungan terperinci Bagaimana Mudah Membuat Sijil Ditandatangani Sendiri dalam C# Tanpa P/Invoke?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan