我創建使用BouncyCastle的BouncyCastle的專用密鑰要X509Certificate2專用密鑰
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.Now.AddYears(1));
gen.SetNotBefore(DateTime.Now.Subtract(new TimeSpan(7,0,0,0)));
gen.SetSignatureAlgorithm("MD5WithRSA");
gen.SetPublicKey(keypair.Public);
gen.AddExtension(
X509Extensions.AuthorityKeyIdentifier.Id,
false,
new AuthorityKeyIdentifier(
SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(keypair.Public),
new GeneralNames(new GeneralName(CN)),
SN
));
gen.AddExtension(
X509Extensions.ExtendedKeyUsage.Id,
false,
new ExtendedKeyUsage(new ArrayList()
{
new DerObjectIdentifier("1.3.6.1.5.5.7.3.1")
}));
var newCert = gen.Generate(keypair.Private);
這一端的證書與
X509Certificate2 certificate = new X509Certificate2(DotNetUtilities.ToX509Certificate((Org.BouncyCastle.X509.X509Certificate)newCert));
現在,因爲我的任務告訴我,來存儲證書和專用密鑰在X509Certificate2對象我需要一種方法將keypair.Private轉換爲X509Certificate2.Private。有任何想法嗎?
謝謝。
什麼類型是keypair.private?你看過AsymmetricAlgorithm.Create()嗎? – 2011-05-25 20:34:54
編輯:嗯,.Create()可以工作,但在keypair.private上使用時會返回null。它的類型爲AsymmetricKeyParameter – barjed 2011-05-25 20:38:51
嘿。感謝您提供有關如何創建X509Certificate2的可用代碼!這非常有幫助! – 2012-02-12 15:33:23