解决WCF部署到IIS出现“证书必须具备可以进行密钥交换的私钥,该进程必须具备访问私钥的权限”

访问WCF服务时,出现异常详细信息: System.Security.Cryptography.CryptographicException: 密钥集不存在。ArgumentException: 证书“CN=MyServerCert”必须具备可以进行密钥交换的私钥。该进程必须具备访问私钥的权限。这个问题是由于 WCF 所使用的账户(NETWORK SERVICE/ASPNET)对证书私钥文件的读访问权限形成的。命令行

 

形成上面的错误主要是Network Service(Server)用户没有访问证书权限,要解决该错误, 只须要给相应的帐号分配权限便可,这里IIS访问证书密钥的权限能够经过WinHttpCertCfg.exe来处理,只须要经过命令行执行该程序便可,以下所示。blog

 

winhttpcertcfg -g -c LOCAL_MACHINE\My -s MyServerCert -a "NETWORK SERVICE" 进程

运行命令后,在运行WCF服务,一切OK了部署

 

 

其它解决办法可参照:WCF部署:让IIS有权限访问证书文件it

 

-------------------------------------------------------------------------------------------------------------------------------io

若是设置了访问权限,还出现上面的错误,那么您须要设置一下应用程序池,操做以下:权限

分别进入Classic .NET AppPool 和 DefaultAppPool 高级设置,将进程模型标识设置为 NetworkService 程序

相关文章
相关标签/搜索