creo un certificado mediante BouncyCastleBouncyCastle PrivateKey Para X509Certificate2 PrivateKey
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);
Este extremo con
X509Certificate2 certificate = new X509Certificate2(DotNetUtilities.ToX509Certificate((Org.BouncyCastle.X509.X509Certificate)newCert));
Ahora, debido a mi tarea me dice para almacenar tanto el certificado como el PrivateKey en el objeto X509Certificate2 Necesito una forma de convertir el par de llaves. Privado en un X509Certificate2.Private. ¿Algunas ideas?
Gracias.
¿Qué tipo es el par de claves.privado? ¿Has mirado AsymmetricAlgorithm.Create()? –
editar: Bueno, el .Create() funciona pero devuelve nulo cuando se usa en el par de claves.privado. Es del tipo AsymmetricKeyParameter – barjed
hey. gracias por un código utilizable sobre cómo crear un X509Certificate2! ¡eso ayudó mucho! –