私はウェブからそれをグーグルし、.netのファイルから新しいx509Certificate2を生成するための多くのサンプルを見つけましたが、.netで最初から完全に新しいx509Certificate2を生成する方法を示すサンプルは1つもありません.
.netでそれを行う方法を教えてくれる人はいますか?
どうもありがとうございました。
私はウェブからそれをグーグルし、.netのファイルから新しいx509Certificate2を生成するための多くのサンプルを見つけましたが、.netで最初から完全に新しいx509Certificate2を生成する方法を示すサンプルは1つもありません.
.netでそれを行う方法を教えてくれる人はいますか?
どうもありがとうございました。
使用できるコードは次のとおりです。
static X509Certificate2 GenerateCertificate(string certName)
{
var keypairgen = new RsaKeyPairGenerator();
keypairgen.Init(new KeyGenerationParameters(new SecureRandom(new CryptoApiRandomGenerator()), 1024));
var keypair = keypairgen.GenerateKeyPair();
var gen = new X509V3CertificateGenerator();
var CN = new X509Name("CN=" + certName);
var SN = BigInteger.ProbablePrime(120, new Random());
gen.SetSerialNumber(SN);
gen.SetSubjectDN(CN);
gen.SetIssuerDN(CN);
gen.SetNotAfter(DateTime.MaxValue);
gen.SetNotBefore(DateTime.Now.Subtract(new TimeSpan(7, 0, 0, 0)));
gen.SetSignatureAlgorithm("MD5WithRSA");
gen.SetPublicKey(keypair.Public);
var newCert = gen.Generate(keypair.Private);
return new X509Certificate2(DotNetUtilities.ToX509Certificate((Org.BouncyCastle.X509.X509Certificate)newCert));
}
これを機能させるには、 BouncyCastle ライブラリへの参照を追加することを忘れないでください
PINVOKE を使用して Crypt32 を呼び出し、自己署名証明書を作成できます。コードを生成して証明書ストアに配置するサンプル コードがいくつか用意されています。
Keith Brown の証明書ジェネレーターもあります。これはマネージ コードで記述されており、使用できるライブラリがあります。
Org.BouncyCastle.X509.X509V3CertificateGenerator
または、ユーティリティ メソッド inOrg.BouncyCastle.Security.DotNetUtilities
および callを使用して BouncyCastle を使用することもできますToX509Certificate()
。
要求を作成し、CA によって署名してもらいたい場合は、.NET の方が実際には簡単です。これらのクラスのほとんどは、COM 相互運用 DLL としてインポートできるからです。しかし、それはまったく別の質問です。
そのAPIを使用してそれを行うことはできないと思います。ただし、Bouncy Castle (http://www.bouncycastle.org) を使用して作成し、後でそのオブジェクトを X509Certificate2 オブジェクトに変換できます (BC にはそれを行うためのユーティリティ クラスがあります)。
-編集- これらの BC クラスを見てみましょう: X509V3CertificateGenerator と X509Certificate
後で BC X509Certificate オブジェクトを通常の X509Certificate2 オブジェクトに変換する BC ユーティリティ クラスは次のとおりです。