我試圖在C#測試控制檯應用程序中使用X509Certificate2類在本地計算機(Win Server 2003)上安裝證書。當我安裝證書用下面的代碼,一切都很好:從.pfx文件安裝證書時遇到問題
var serviceRuntimeMachineCertificateStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
serviceRuntimeMachineCertificateStore.Open(OpenFlags.ReadWrite);
cert = new X509Certificate2(certificatePath);
serviceRuntimeMachineCertificateStore.Add(cert);
serviceRuntimeMachineCertificateStore.Close();
問題是,證書的私鑰不持久,當沒有安裝X509KeyStorageFlags.PersistKeySet。所以,我試圖實例化這樣的證書(私鑰沒有密碼,所以我傳遞一個空字符串):
var serviceRuntimeMachineCertificateStore = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
serviceRuntimeMachineCertificateStore.Open(OpenFlags.ReadWrite);
cert = new X509Certificate2(certificatePath, "", X509KeyStorageFlags.PersistKeySet);
serviceRuntimeMachineCertificateStore.Add(cert);
serviceRuntimeMachineCertificateStore.Close();
但試圖實例化證書拋出一個System.Security.Cryptography.CryptographicException「失敗加載證書:指定的網絡密碼不正確「,即使私鑰沒有密碼。
如果我在Microsoft管理控制檯中導入證書而未指定密碼,則效果很好。
有沒有人知道如何以編程方式做到這一點?
我在Windows XP SP3上遇到了同樣的問題,可以修復它被我們不帶密碼的X509Certificate2構造函數版本 – NineBerry 2013-12-12 15:29:14