[英]X509Store Certificates.Find FindByThumbprint
使用store.Certificates.Find時出現問題。 我正在將Windows Server 2008 R2與NET 3.5配合使用。 該證書由安裝
public static void AddCertificate(X509Certificate2 cert, StoreName name = StoreName.My, StoreLocation location = StoreLocation.LocalMachine)
{
var store = new X509Store(name, location);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
}
在那之后,找到證書
string certThumbprint = "XXXX";
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, true);
if (certificates.Count == 0)
{
throw new ArgumentException("No certificate found with given thumbprint.");
}
根本不應該拋出異常,但有時似乎會拋出異常。 每100次運行大約拋出5次異常。
我已經在Google上搜索並找到了“看不見的第一個字符”問題,但是就我而言,指紋確實是硬編碼的。 我沒有從任何地方閱讀指紋。 在帶有NET.4.5的Windows Server 2012上運行的確切代碼從未給我任何問題。 這僅適用於帶有NET.3.5的Windows服務器。 我想知道為什么僅在WS2008R2上結果如此不一致?
我認為問題可能在於您的用戶對證書沒有權限
嘗試這個
請驗證證書確實在插入它的LocalMachine \\ My存儲中。 我假設您會在商店中找到該證書,但是當您雙擊該證書時,您會看到該證書不受信任。 我的假設是證書鏈沒有建立到受信任的根CA。
現在,修改您的代碼以搜索證書(我將最后一個參數更改為false )
var certificates = store.Certificates.Find(X509FindType.FindByThumbprint, commandLineArgs.CertificateThumbprint, false);
或(更好的IMHO)是通過將CA證書導入到適當的存儲區(根,中間機構)來使導入的證書受信任。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.