在我的ASP.NET應用程序中我加載從證書存儲的證書:證書私鑰下,IIS Web服務器將引發CryptographicException
var myCert = CertificateUtils.GetCertificate("thumbprint");
此證書包含一個密鑰對用於解密的加密應用設置。
證書安裝在個人證書商店下的本地計算機。當應用程序在IIS Express下運行時,它運行良好。但如果我在完整IIS Web服務器下執行它,myCert
實例是缺少私鑰。
myCert
對象的PrivateKey
字段包含一個例外:
'myCert.PrivateKey' threw an exception of type 'System.Security.Cryptography.CryptographicException'
我已通過檢查確認myCert
對象的其他字段包含相同的值(如,例如,證書序列號,指紋或到期),所以它似乎它在IIS和IIS Express下獲得相同的證書。在完整IIS的情況下,只有私鑰丟失。
我唯一改變的是項目屬性中的Local Development Server(「使用IIE Express」/「使用IIS Web服務器」)。在兩種情況下,它都在Azure仿真器Express內部運行。
有沒有人有一個想法,爲什麼這會發生?
我明白了。這確實是有道理的。但是,我能做些什麼來在完整的IIS下使用該證書和密鑰? –
@DawidFerenczy你可以授予池身份證書訪問權限。在mmc的證書管理管理單元中這樣做很容易。 –
好的,所以我確定了用於我的應用程序的應用程序池。此應用程序池的標識設置爲「NetworkService」,因此我需要授予該帳戶的證書訪問權限,對不對?我已經檢查了MMC中的證書,但我無法找到配置權限的位置。請問你能幫幫我嗎?我還需要什麼權限? –