2017-02-10 75 views
0

我使用下面的代碼對數據進行簽名:安裝證書到我的本地機器後計算機重新啓動,「System.Security.Cryptography.CryptographicException」後:鍵集不存在

 RSACryptoServiceProvider csp; 

     X509Store my = new X509Store(StoreName.My, StoreLocation.LocalMachine); 

     my.Open(OpenFlags.ReadOnly); 

     foreach (X509Certificate2 cert in my.Certificates) 
     { 
      if (cert.Subject.Contains(certSubject)) 
      { 
       csp = (RSACryptoServiceProvider)cert.PrivateKey; 
      } 
     } 
     csp.SignHash(hash, CryptoConfig.MapNameToOID("SHA256")); 

第一次工作正常但是當我嘗試在計算機重新啓動後進行簽名時,會引發異常。可能的原因是什麼,請幫忙。

+0

在你的代碼中的任何地方設置了類似'csp.PersistKeyInCsp = false'的東西嗎?如果是這樣,那麼這個對象就會被處理掉。 – bartonjs

+0

不,計算機沒有重新啓動工作正常,但在重新啓動問題發生後,是否在系統重新啓動時處理? – Aasish

+0

在當前用戶而不是本地機器上安裝證書,但在本地機器上安裝會發生同樣的錯誤。 – Aasish

回答

0

我有同樣的問題。在我的帳戶中運行的IIS Express能夠在本地機器上導入證書時訪問證書的私鑰,但不能在重新啓動後訪問。我能夠修復的方式是明確授予我的賬戶在控制檯上的完全權利(即使您的賬戶已經在擁有該私鑰全權的本地管理員組中)。

相關問題