我有一個wcf服務託管的Windows服務。我們使用由RSA算法加密的私人證書加密密碼。當以用戶A身份遠程登錄時,證書(pfx文件)安裝在服務器上。應用程序在嘗試獲取私鑰時拋出異常「密鑰在指定狀態中無效」。 Windows服務在帳戶本地系統下運行。在程序集中調用解密函數時,它在帳戶A下運行(模擬用於wcf服務中的不同調用)。該服務器是64位Windows Server 2008 R2。相同的代碼適用於安裝在Windows Server 2012服務器上的其他應用程序中的解密。密鑰無效使用在指定的狀態errror獲取私鑰時
我已經做了以下,但具有相同的錯誤消息結束了:
- 安裝證書一次(在certmgr.msc卸載證書,在加密文件夾中刪除鍵集,經檢查發現我得到一個不同的錯誤消息(密鑰集不可用),重新啓動服務器,重新安裝相同的證書,重新啓動服務器)。
- 刪除加密文件夾,重新安裝證書。
- 我一直信任證書的全系統(參見:https://superuser.com/questions/370217/trust-ssl-certificate-to-local-system-account)
- 我已經改變了用戶的Windows服務下運行是帳戶A. 我已經檢查了用戶A的訪問使用此命令的私鑰:winhttpcertcfg -l -c CURRENT_USER \ MY MyCertificate。
- 要解密的字符串與其他應用程序中使用的字符串長度相同,因爲我們沒有這個問題,所以我們不認爲它與長度有關(字符串長度爲137)。另外,我們明確知道它沒有獲得私鑰。 (參見:https://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.encrypt.aspx(fOAEP設置爲false)
- 我心中已經創建了一個新的證書與遠程登錄的用戶A在服務器上使用不同的名稱
- 我檢查的域,裝配和mscorlib中是完全可信
需要專家的幫助!我可以使用沒有證書的舊加密,但那不是安全的。並且使用這麼多時間沒有任何結果是如此令人沮喪......
此致敬禮,克里斯蒂娜。