【发布时间】:2016-01-27 22:54:00
【问题描述】:
我有一个 由 Windows 服务托管的 wcf 服务。我们使用通过 RSA 算法加密的私人证书对密码进行加密。以用户 A 远程登录时,证书(pfx 文件)安装在服务器上。应用程序抛出异常“Key not valid for use in specified state”它试图获取私钥。 windows服务在账户本地系统下运行。当在程序集中调用解密函数时,它在帐户 A 下运行(模拟用于 wcf 服务中的不同调用)。服务器是 64 位 Windows Server 2008 R2。相同的代码适用于安装在 Windows Server 2012 服务器上的其他应用程序中的解密。
我已经完成了以下操作,但最终得到相同的错误消息:
- 再次安装证书(在 certmgr.msc 中卸载证书,在 Crypto 文件夹中删除密钥集,检查我收到不同的错误消息(密钥集不可用),重新启动服务器,重新安装相同的证书,重新启动服务器)。
- 已删除 Crypto 文件夹,重新安装证书。
- 我信任整个系统的证书(请参阅:https://superuser.com/questions/370217/trust-ssl-certificate-to-local-system-account)
- 我已将运行 Windows 服务的用户更改为帐户 A。 我已经使用以下命令检查了用户 A 是否可以访问私钥:winhttpcertcfg -l -c CURRENT_USER\MY MyCertificate。
- 要解密的字符串长度与其他应用程序中使用的长度相同,我们没有这个问题,所以我们认为它与长度无关(字符串长度为 137)。此外,我们特别知道它无法获取私钥。 (参考:https://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider.encrypt.aspx(fOAEP设置为false)
- 我在以用户 A 远程登录的服务器上创建了一个具有不同名称的新证书。
- 我已检查域、程序集和 mscorlib 是否完全受信任
需要专家帮助!我可以使用没有证书的旧加密,但这并不安全。花了这么多时间却没有任何结果真是令人沮丧……
最好的问候,克里斯汀。
【问题讨论】:
标签: wcf cryptography rsa