无法打开 RSA 密钥容器。Windows Server 2008 R2

无法打开 RSA 密钥容器。Windows Server 2008 R2

我正在 Windows 2008 R2 服务器上设置第二个 asp.net 站点。我们使用 RSA 密钥容器来加密我们的连接字符串。我创建了一个新应用程序池,其所有设置与支持我们当前站点的默认应用程序池相同,包括使用相同的用户帐户作为身份。当我尝试访问新站点时,出现以下错误:无法打开 RSA 密钥容器

如果我将新网站更改为使用我们的默认应用程序池,它就会正常工作。因此,我尝试在管理员命令提示符中使用以下命令,让新应用程序池中的用户帐户访问 RSA 密钥容器:

aspnet_regiis -pa "密钥容器名称" "dmz\用户名"

我收到以下错误:未找到 RSA 密钥容器。

我运行以下命令来安装密钥容器:

aspnet_regiis -pi “密钥容器名称” “c:\keys.xml”

我收到以下错误:对象已存在

我尝试运行以下命令来删除密钥容器:

aspnet_regiis -pz "密钥容器名称"

我收到此错误:未找到 RSA 密钥容器。失败!

所以我完全困惑了,一个命令告诉我它已经存在,这很有道理,因为我知道我们的一个网站正在使用它,但是当我尝试删除它时,它告诉我它不存在。它适用于一个应用程序池,但不适用于使用完全相同标识的新应用程序池?我在其他 12 台服务器上进行了完全相同的设置,它们都运行良好。

答案1

我也遇到过类似的事情。

如果您使用的帐户没有密钥容器的权限,那么当您尝试授予其权限时(aspnet_regiis -pa "KeyContainerName" "dmz\UserName"),您将收到“未找到密钥容器”错误。但是密钥确实存在;因此,当您尝试重新创建它时会出现错误。

这意味着该密钥是由不同的帐户创建的。

如果你能以该帐户登录,那么你可以这样做

aspnet_regiis -pa "KeyContainerName" "dmz\YourUserName" -full

授予您自己的帐户对密钥的控制权。我建议设置一个 KeyAdministrators NT 组并授予该组的访问权限,并将您自己加入该组。

答案2

“我在其他 12 台服务器上做了同样的事情,效果很好”

出色地:

重新映像服务器或者重新启动。即使处于早期阶段,这一点显然也有所不同。

如果你在每台服务器上都做着同样的事情(顺便问一下,为什么没有编写脚本?),而且它们的行为和配置都完全相同,但这个有点不同,情况只会变得更糟。

答案3

检查或尝试使用 aspnet_regiis.exe 的完整路径。您可能知道,这可以是 32 位或 64 位版本。例如:

%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pa "KeyContainerName" "domain\user"  
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pa "KeyContainerName" "domain\user"  

%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis -pa "KeyContainerName" "domain\user"  
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pa "KeyContainerName" "domain\user"  

%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  
%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  

%SYSTEMROOT%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  
%SYSTEMROOT%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pi "KeyContainerName" "c:\keys.xml"  

答案4

我们也遇到了同样的问题在克隆的服务器上,但无法让 Paul 的解决方案奏效。相反,我们所做的就是在计算机上搜索文件机器键,并从 ...\Crypto\RSA\ 文件夹中删除了一个。

完成此操作后,我们能够重新创建 RSA 密钥容器。然后重新创建我们删除的 machineKeys 文件。

相关内容