У меня есть PKCS # 7, подписанный, файл .p7b, который содержит сертификат X509 SSL и сертификаты промежуточного и корневого CA, с которыми он был подписан. Мне нужно использовать C # для анализа файла .p7b, извлечения сертификата SSL и извлечения из него некоторых значений (срок действия, DN и т. Д.).
Я пытался прочитать его как сертификат X509, вот так:
//certContent is a byte array with the p7b file contents
X509Certificate2 cert = new X509Certificate2(certContent);
Это прекрасно работает с обычным сертификатом .cer, но выдает CryptographicException
при использовании с сертификатом .p7b. Это потому, что .p7b содержит всю цепочку сертификатов.
Я также попытался проанализировать его как объект SignedCms
, затем выполнить итерацию по цепочке сертификатов и извлечь свой сертификат SSL:
SignedCms certContainer = new SignedCms();
certContainer.Decode(certContent);
foreach(X509Certificate2 cert in certConatiner.Certificates)
{
...
}
Однако это создает исключение для Decode
, говоря ASN1 bad tag value met
. После некоторых поисков я считаю, что это потому, что у меня нет личного ключа, который использовался для создания сертификата и / или подписи сертификата.
Кто-нибудь знает, как я могу проанализировать эту цепочку сертификатов .p7b с помощью C #?