2014-03-25 51 views
1

從PKCS#12(PFX文件)中,我如何識別集合中證書的類型以打開適當的X509Store?使用C#導入證書和鏈(PFX文件)

X509Certificate2Collection collection = new X509Certificate2Collection(); 
collection.Import("mycert.pfx", "mypass", X509KeyStorageFlags.PersistKeySet); 
foreach(X509Certificate2 cert in collection) 
{ 
    // client cert? intermediate CA? root CA? 
} 

通常在我的方案中,客戶端證書具有私鑰並且根CA具有cert.Subject == cert.Issuer。這是唯一的方法嗎?

回答

1

我的猜測是建立一個X509Chain並按照每個ChainElement

對於此鏈中的每個證書,查看它是否具有私鑰。如果它有它是最終實體證書(我沒有測試它,但鏈應該建立分層,所以任何最終實體將是鏈的第一個或最後一個元素)。

其他任何東西都應該是CA證書。但爲了安全起見,我會尋找KeyUsage Certificate Signing擴展名和BasicConstraints Subject Type=CA

相關問題