gpt4 book ai didi

c# - "The RSA key container could not be opened"即使在 ACL 权限之后仍然出错(对于某些用户)

转载 作者:太空狗 更新时间:2023-10-29 22:11:05 24 4
gpt4 key购买 nike

应用加密时出现以下错误(在 asp.net 网站中)。

解析器错误消息:无法使用提供程序“RsaProtectedConfigurationProvider”进行解密。来自提供商的错误消息:无法打开 RSA key 容器。

注意:请参阅下面列出的我们遵循的步骤。 (我们已经在NetFrameworkConfigurationKey上授予了NT Authority\Network Service的ACL权限)

注意:我们在 IIS7 中启用了 Windows 身份验证和 ASP.NET 模拟。它在 Windows Server 2008 中运行。访问权限是根据用户是否属于允许的 AD 组(将在配置文件中列出)来控制的。

有趣的是,当 group1 的用户(来自 location1)访问它时会发生此错误。当 group2 的用户(来自 locatiob2)尝试访问它时,错误没有出现。

关于如何纠正它有什么想法吗?

我们已按照部署文档中列出的以下步骤进行操作。

  1. 在管理员模式下运行命令窗口。 (在 Windows Server 2008 中,键入 cmd 并按 CTRL+SHIFT+ENTER)
  2. 使用更改目录命令 (cd) 转到文件夹 C:\Windows\Microsoft.Net\Framework\v4.0.30319\。
  3. 键入以下命令以创建 RSA key 容器。 aspnet_regiis -pc "NetFrameworkConfigurationKey"–exp
  4. 键入以下内容(添加访问 RSA key 容器的 ACL)并按回车键 aspnet_regiis -pa "NetFrameworkConfigurationKey""NT Authority\Network Service"
  5. 键入以下内容(在将突出显示的文本替换为部署服务的位置后)并按 Enter 以加密服务的 Web.Config 中的连接字符串。 aspnet_regiis.exe -pef "connectionStrings""C:\MyWCF\ServiceName"
  6. 键入以下内容(在将突出显示的文本替换为网站部署位置后)并按 Enter 以加密网站 Web.Config 中的连接字符串。 aspnet_regiis.exe -pef "connectionStrings""C:\MyWeb\WebsiteName"
  7. 键入以下内容(在将突出显示的文本替换为网站的 web.config 文件可用的位置之后)并按 Enter 以加密网站的 Web.Config 中的 sessionState 值。 aspnet_regiis.exe -pef "system.web/sessionState""C:\MyWeb\WebsiteName"
  8. 验证连接字符串和 SessionState 值是否已加密。
  9. 在 Machine.Config 的 configProtectedData 部分验证以下详细信息。

• 验证 defaultProvider="RsaProtectedConfigurationProvider"

• 验证 keyContainerName="NetFrameworkConfigurationKey"

注意:machine.config 的默认位置是 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config

最佳答案

以下是我尝试过的一种不涉及机器配置的方法。

注意:如果目标是在 Windows Server 2008 中,则加密步骤需要在 Windows Server 2008 本身中执行。

在服务器A中执行以下代码

注意:- 注册 key

 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 key 的 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,&#xD;&#xA;
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,&#xD;&#xA; processorArchitecture=MSIL"
useMachineContainer="true" />
</providers>
</configProtectedData>

加密

aspnet_regiis -pef "connectionStrings" "E:\wmapps\webroot\myservice" -prov "RsaProtectedConfigurationProvider"

复制了B服务器中的加密文件。将 key xml文件复制到B服务器。

使用以下命令创建批处理文件并执行(用于 key 注册和授予访问权限)

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"

关于c# - "The RSA key container could not be opened"即使在 ACL 权限之后仍然出错(对于某些用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9326621/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com