У меня проблема с генерацией 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());
}