ホームページ > バックエンド開発 > C++ > P/Invoke を使用せずに C# で自己署名証明書を簡単に作成する方法

P/Invoke を使用せずに C# で自己署名証明書を簡単に作成する方法

Linda Hamilton
リリース: 2025-01-13 08:36:42
オリジナル
145 人が閲覧しました

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

C# 自己署名証明書作成ガイド: 包括的な分析

さまざまなシナリオ、特にローカル暗号化では、自己署名証明書を作成する必要があります。 Crypt32.dll の P/Invoke 実装を使用することもできますが、この方法は複雑で退屈になる可能性があります。この記事では、System.Security.Cryptography.X509Certificates 名前空間を使用した、より直接的な、P/Invoke を使用しない方法について説明します。

.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 ハッシュを使用して自己署名証明書を生成します。証明書は 5 年間有効で、PFX (PKCS #12) および CER 形式にエクスポートできます。

概要

.NET の System.Security.Cryptography.X509Certificates 名前空間は、C# で自己署名証明書を作成するための簡単なメカニズムを提供します。この記事では、ローカル暗号化のニーズに応える P/Invoke フリーのクロスプラットフォーム ソリューションを提供する、証明書の生成、エクスポート、保存のプロセスについて概要を説明します。

以上がP/Invoke を使用せずに C# で自己署名証明書を簡単に作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート