Bouncy Castle c #, как сгенерировать pfx файл с полным путем сертификации - PullRequest
0 голосов
/ 20 февраля 2019

У меня проблема с генерацией pfx-файла с полной цепочкой сертификатов, который правильно читается как объект X509Certificate2 в ядре .net для аутентификации.Я пробовал разные подходы, но безуспешно.

У меня есть цепочка, сгенерированная OpenSSL, и я использую последний сертификат и закрытый ключ для генерации пользовательских сертификатов для аутентификации.Наконец, у меня есть PEM-файлы с сертификатами (каждый сертификат из цепочки в отдельном файле)

----- НАЧАТЬ СЕРТИФИКАТ ----- MIIFR [....] Aerk = ----- КОНЕЦ СЕРТИФИКАТА -----

и т. Д.В контроллере webapi у меня есть

X509Certificate2 clientCertificate = 
this.Request.HttpContext.Connection.ClientCertificate;
X509Chain x509Chain = new X509Chain(){ ChainPolicy = new 
X509ChainPolicy({...}};
x509Chain.Build(clientCertificate))
var elements = x509Chain.ChainElements.Cast<X509ChainElement>()
// in elements variable I expect to have more than one item but I don't have

Как правильно сгенерировать pfx в Bouncy Castle для достижения этого?

Ниже приведен фрагмент кода для создания файла pfx, который генерирует pfx, но читаетсякак X509Certificate2 только с одним элементом цепи.Как изменить его, чтобы все они были доступны?

Pkcs12Store store = new Pkcs12Store();
X509CertificateEntry[] chain = new X509CertificateEntry[5];

X509Certificate cert1 = certParser.ReadCertificate(new 
MemoryStream(Encoding.UTF8.GetBytes(certString1)));
X509CertificateEntry certificateEntry1 = new X509CertificateEntry(cert1);
chain[0] = certificateEntry1;
// I adds all certs in order from user cert to root one (self signed) 
store.SetKeyEntry(csr.GetCertificationRequestInfo().Subject.ToString(), new 
AsymmetricKeyEntry(key.Private), chain);

using (var filestream = new FileStream("./full.cert.pfx"), FileMode.Create, 
FileAccess.ReadWrite)){
store.Save(filestream, "".ToCharArray(), new SecureRandom());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...