一个 VS 解决方案中有两个项目:客户端(wpf 应用程序)和 wcf 服务库。
我在服务器端使用消息安全和自定义 AspNetMembershipPrivider 来验证用户名并通过。
由于我没有使用 Windows 安全性,我不得不在服务器上使用证书来建立安全的 chanell,我做了什么:
- 打开我的本地 IIS 管理器并添加了名为我的开发机器的自签名证书。
- 检查此证书是否出现在个人证书下的证书管理单元中
- 将 wcf .config 配置为指向该证书。
- 在 VS 中启动了我的客户端应用程序(并且 VS 还为我的 wcf lib 启动了 wcfhost 应用程序)
一切都很好,wcfhost 工作正常,我的服务工作正常,直到我重新启动。重新启动后 wcfhost 表示抱怨:
证书“CN=xxx”必须有一个私钥 的密钥交换。该进程必须具有私有访问权限 钥匙。---> System.Security.Cryptography.CryptographicException:密钥集不存在
唯一有帮助的是重新创建我的证书,直到重新启动。正如我上面所说,我的服务在我的用户帐户(本地管理员)下运行,所以我认为我的 c:\Users\xxx\AppData\Roaming\Microsoft\Crypto\RSA\ 文件的权限不是问题。
我使用 iis 管理器创建证书而不是 makeert 等的原因是因为我想确保一切都将在我拥有的共享 osting 帐户上运行(托管面板中有创建自签名证书的选项)。
有人可以帮忙吗?谢谢