C# &引用;无法打开RSA密钥容器";即使在ACL权限之后也会出错(对于某些用户)
应用加密时,我们(在asp.net网站中)出现以下错误 分析器错误消息:无法使用提供程序“RsaProtectedConfigurationProvider”进行解密。来自提供程序的错误消息:无法打开RSA密钥容器。 注意:请参阅下面列出的我们遵循的步骤。(我们已授予NetFrameworkConfigurationKey上NT Authority\Network服务的ACL权限) 注意:我们在IIS7中启用了Windows身份验证和ASP.NET模拟。它正在Windows Server 2008中运行。根据用户是否属于允许的AD组(将在配置文件中列出)来控制访问 有趣的是,当group1(来自location1)的用户访问它时,会发生此错误。当group2(来自LocatiObj2)的用户尝试访问它时,错误不会出现。 有没有关于如何纠正的想法 我们遵循了部署文档中列出的以下步骤C# &引用;无法打开RSA密钥容器";即使在ACL权限之后也会出错(对于某些用户),c#,asp.net,iis,iis-7,windows-server-2008,C#,Asp.net,Iis,Iis 7,Windows Server 2008,应用加密时,我们(在asp.net网站中)出现以下错误 分析器错误消息:无法使用提供程序“RsaProtectedConfigurationProvider”进行解密。来自提供程序的错误消息:无法打开RSA密钥容器。 注意:请参阅下面列出的我们遵循的步骤。(我们已授予NetFrameworkConfigurationKey上NT Authority\Network服务的ACL权限) 注意:我们在IIS7中启用了Windows身份验证和ASP.NET模拟。它正在Windows Server 200
注意:machine.config的默认位置是C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config如果启用了模拟,则将使用访问应用程序的用户的身份(而不是网络服务)访问RSA密钥容器
您需要禁用模拟,或者将可以访问应用程序的所有用户添加到密钥容器的ACL中。以下是我尝试过的一种方法,它不涉及机器配置 注意:如果目标在Windows Server 2008中,则需要在Windows Server 2008本身中执行加密步骤 在服务器A中执行以下代码 注意:-注册密钥
cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe -pc "MyProjectKeys" -exp
注意:-仅授予对服务器A的访问权限
aspnet_regiis.exe -pa "MyProjectKeys" "IIS APPPOOL\testpsreloservices"
aspnet_regiis.exe -pa "MyProjectKeys" "NT AUTHORITY\NETWORK"
导出的包含RSA密钥的XML文件
aspnet_regiis.exe -px "MyProjectKeys" E:\wmapps\webroot\myservice\MyProjectKey.xml –pri
在web.config中添加了以下内容
<configProtectedData>
<providers>
<clear/>
<remove name="RSAProtectedConfigurationProvider" />
<add name="RSAProtectedConfigurationProvider" keyContainerName="MyProjectKeys"
type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,

Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
 processorArchitecture=MSIL"
useMachineContainer="true" />
</providers>
</configProtectedData>
已在B服务器中复制加密文件。
将密钥xml文件复制到B服务器中
使用以下命令创建并执行批处理文件(用于密钥注册和授予访问权限)
在我的例子中,我使用ASPNET_regis对连接字符串进行了加密。我有最后一个应用程序,我终于开始修改,从一个旧服务器移动到使用加密密钥的服务器。已部署此应用程序的旧版本,但尚未使用。当我将最新版本部署(发布)到服务器时,我使用了Replace方法而不是delete方法。我遇到了这个错误,在这里绊倒了。没有一个解决方案对我有效 我的解决方案: 所以我决定清除应用程序文件夹的内容,然后重新发布
这样做纠正了我的问题 参考:很明显,我已经授予了一个帐户的访问权限,而我的应用程序池正在另一个帐户上运行。只要我能访问正确的帐户,它就工作了。谢谢!:)为正确的用户提供权限非常重要。我苦苦挣扎了4个小时,最后终于明白,我们还需要提供至少正确应用程序池的权限。不确定网络。
aspnet_regiis -pef "connectionStrings" "E:\wmapps\webroot\myservice" -prov "RsaProtectedConfigurationProvider"
c:
cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe -pi "MyProjectKeys" E:\wmapps\webroot\myservice\MyProjectKey.xml
aspnet_regiis.exe -pa "MyProjectKeys" "IIS APPPOOL\testpsreloservices"
aspnet_regiis.exe -pa "MyProjectKeys" "NT AUTHORITY\NETWORK"