在我的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中的证书,但我无法找到配置权限的位置。请问你能帮帮我吗?我还需要什么权限? –