我正在Windows 2008 R2服务器上build立第二个asp.net站点。 我们使用RSA密钥容器来encryption我们的连接string。 我创build了一个新的应用程序池,其中包含与我们当前网站支持的默认应用程序池相同的设置,包括使用相同的用户帐户作为身份。 当我尝试访问新的站点时,出现以下错误:无法打开RSA密钥容器
如果我更改新的网站使用我们的默认应用程序池它的作品。 因此,我尝试在pipe理员命令提示符下使用以下命令将新用户帐户的访问权限交给RSA密钥容器:
aspnet_regiis -pa“KeyContainerName”“dmz \ UserName”
我得到以下错误:未findRSA密钥容器。
我运行以下命令来安装密钥容器:
aspnet_regiis -pi“KeyContainerName”“c:\ keys.xml”
我得到以下错误:对象已经存在
我尝试运行以下命令来删除密钥容器:
aspnet_regiis -pz“KeyContainerName”
我得到这个错误:没有findRSA密钥容器。 失败!
所以我完全困惑,一个命令告诉我它已经存在,这是有道理的,因为我知道我们的一个网站正在使用它,但是当我试图删除它告诉我它不存在。 它适用于一个应用程序池,但不适用于使用完全相同的身份的新应用程序池? 我做了12个其他服务器上完全相同的设置,他们都工作正常。
我有类似的东西。
如果您正在使用的帐户没有密钥容器的权限,那么当您尝试授予权限( aspnet_regiis -pa "KeyContainerName" "dmz\UserName"
)时,您将收到密钥容器找不到错误。 然而关键确实存在; 因此,当您尝试重新创build时出现错误。
这意味着密钥是由另一个帐户创build的。
如果您可以以该帐户login,则可以执行此操作
aspnet_regiis -pa "KeyContainerName" "dmz\YourUserName" -full
授予您自己的账户控制权。 我build议设置一个KeyAdministrators NT组,授予对该组的访问权限,并让自己进入组。
“我在其他12台服务器上做了同样的事情,它工作的很好”
好:
重新映像服务器或重新启动。 即使在这个早期阶段,这个东西显然是不同的。
如果你在每一台服务器上做了完全一样的事情(事实上,为什么不这样做呢?),他们都performance完全相同,都是完全相同的configuration,但是这种方式不同 ,事情只会从这里变得更糟。
检查或尝试使用aspnet_regiis.exe的完整path。 如您所知,这可以是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"
我们在克隆的服务器上也遇到了同样的问题,但无法使Paul的解决scheme正常工作。 相反,我们所做的是在计算机上search文件machineKeys ,并从… \ Crypto \ RSA \文件夹中删除一个。
这样做之后,我们能够重新创buildRSA密钥容器。 然后重新创build我们删除的machineKeys文件。