解決WCF部署到IIS出現“證書必須具有能夠進行密鑰交換的私鑰,該進程必須具有訪問私鑰的權限”


訪問WCF服務時,出現異常詳細信息: System.Security.Cryptography.CryptographicException: 密鑰集不存在。ArgumentException: 證書“CN=MyServerCert”必須具有能夠進行密鑰交換的私鑰。該進程必須具有訪問私鑰的權限。這個問題是因為 WCF 所使用的帳戶(NETWORK SERVICE/ASPNET)對證書私鑰文件的讀訪問權限造成的。

 

造成上面的錯誤主要是Network Service(Server)用戶沒有訪問證書權限,要解決該錯誤, 只需要給相應的賬號分配權限即可,這里IIS訪問證書密鑰的權限可以通過WinHttpCertCfg.exe來處理,只需要通過命令行執行該程序即可,如下所示。

 

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

運行命令后,在運行WCF服務,一切OK了

 

 

其它解決辦法可參照:WCF部署:讓IIS有權限訪問證書文件

 

-------------------------------------------------------------------------------------------------------------------------------

如果設置了訪問權限,還出現上面的錯誤,那么您需要設置一下應用程序池,操作如下:

分別進入Classic .NET AppPool 和 DefaultAppPool 高級設置,將進程模型標識設置為 NetworkService 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM