Csharp/C#教程:“无法打开RSA密钥容器”即使在ACL权限之后也会出错(对于某些用户)分享


“无法打开RSA密钥容器”即使在ACL权限之后也会出错(对于某些用户)

应用加密时,我们收到以下错误(在asp.net网站上)。

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

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

注意:我们在IIS7中使用启用Windows身份validation和启用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密钥容器。 aspnet_regiis -pc“NetFrameworkConfigurationKey”–exp
  4. 键入以下内容(添加用于访问RSA密钥容器的ACL),然后按enter aspnet_regiis -pa“NetFrameworkConfigurationKey”“NT Authority Network Service”
  5. 键入以下内容(在将突出显示的文本替换为部署服务的位置之后),然后按Enter键加密Service的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键加载Website的Web.Config中的sessionState值。 aspnet_regiis.exe -pef“system.web / sessionState”“C: MyWeb WebsiteName”
  8. validation连接字符串和SessionState值是否已加密。
  9. validationMachine.Config中configProtectedData部分中的以下详细信息。

•validationdefaultProvider =“RsaProtectedConfigurationProvider”

•validationkeyContainerName =“NetFrameworkConfigurationKey”

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

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

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

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

注意: – 注册密钥

cd C:WINDOWSMicrosoft.NETFrameworkv4.0.30319 aspnet_regiis.exe -pc "MyProjectKeys" -exp 

注意: – 仅在服务器A上授予访问权限

 aspnet_regiis.exe -pa "MyProjectKeys" "IIS APPPOOLtestpsreloservices" aspnet_regiis.exe -pa "MyProjectKeys" "NT AUTHORITYNETWORK" 

导出的包含RSA密钥的XML文件

 aspnet_regiis.exe -px "MyProjectKeys" E:wmappswebrootmyserviceMyProjectKey.xml –pri 

在web.config中添加了以下内容

        

加密

 aspnet_regiis -pef "connectionStrings" "E:wmappswebrootmyservice" -prov "RsaProtectedConfigurationProvider" 

在B服务器中复制加密文件。 将密钥xml文件复制到B服务器。

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

 c: cd C:WINDOWSMicrosoft.NETFrameworkv4.0.30319 aspnet_regiis.exe -pi "MyProjectKeys" E:wmappswebrootmyserviceMyProjectKey.xml aspnet_regiis.exe -pa "MyProjectKeys" "IIS APPPOOLtestpsreloservices" aspnet_regiis.exe -pa "MyProjectKeys" "NT AUTHORITYNETWORK" 

如果启用了模拟,则将使用访问应用程序的用户的身份访问RSA密钥容器,而不是网络服务。

您可能需要禁用模拟,或者将可以访问应用程序的所有用户添加到密钥容器的ACL中。

上述就是C#学习教程:“无法打开RSA密钥容器”即使在ACL权限之后也会出错(对于某些用户)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1042813.html

(0)
上一篇 2022年1月30日
下一篇 2022年1月30日

精彩推荐