无法打开RSA密钥容器

时间:2010-05-27 13:38:59

标签: asp.net configuration permissions rsacryptoserviceprovider

我一直在运行XP home的旧机器上开发一个ASP.NET站点。我最近得到了一台新的Win 7 PC,并将我的所有项目文件都移动了。当我尝试运行该项目时,收到此错误消息:

"Failed to decrypt using provider 'MyRsaProtectedConfigurationProvider'. Error message from the provider: The RSA key container could not be opened."

我意识到我使用RSA encryption加密了部分web.config文件。这就是现在问题所在。我不确定如何再次使用该键,以便我可以在我的新机器上使用它。我从旧机器导出密钥并使用以下方法导入:

aspnet_regiis -pi "RSAProviderName" "C:\RSA_configkey.xml"

这是成功导入的。然后我运行了该项目,但出现了相同的错误消息。我认为这可能是一个许可的事情,所以我跑了:

aspnet_regiis -pa "RSAProviderName" "\Desktop" -full

这也很成功,但我仍然得到错误。从阅读,我看到人们使用“ASPNET”而不是“\桌面”(桌面是我的机器名称)。但是,当我尝试使用“ASPNET”时,我得到:

No mapping between account name and security IDs was done. <Exception from HRESULT = 0x80070534

在修复此项目之前,我无法继续工作,因此非常感谢任何帮助。 谢谢!

2 个答案:

答案 0 :(得分:28)

如果您仍然可以访问旧计算机,则可以始终解密该计算机上的配置部分,然后将未加密的配置文件复制到新计算机(如果需要,还可以重新加密旧计算机上的文件)

在Windows 7上,默认运行IIS应用程序池的帐户可能是 ApplicationPoolIdentity (而不是 ASPNET )。要授予权限,请尝试以下操作:

aspnet_regiis -pa RSAProviderName "IIS APPPOOL\DefaultAppPool" -full

顺便说一下,如果您决定坚持将密钥从旧计算机复制到新计算机,则应确保在导出时导出私钥数据:

aspnet_regiis -px RSAProviderName C:\RSA_configkey.xml -pri

并且,可选地,在导入期间使密钥数据可导出:

aspnet_regiis -pi RSAProviderName C:\RSA_configkey.xml -exp

答案 1 :(得分:0)

我遇到了同样的问题,但是使用管理员运行命令提示符/ powershell解决了该问题。