“无法打开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)尝试访问它时,错误不会发生。
有关如何纠正它的任何想法?
我们已从部署文档中按照下面列出的步骤进行操作。
- 在管理员模式下运行命令窗口。 (在Windows Server 2008中,键入cmd并按CTRL + SHIFT + ENTER)
- 使用更改目录命令(cd)转到文件夹C: Windows Microsoft.Net Framework v4.0.30319 。
- 键入以下命令以创建RSA密钥容器。 aspnet_regiis -pc“NetFrameworkConfigurationKey”–exp
- 键入以下内容(添加用于访问RSA密钥容器的ACL),然后按enter aspnet_regiis -pa“NetFrameworkConfigurationKey”“NT Authority Network Service”
- 键入以下内容(在将突出显示的文本替换为部署服务的位置之后),然后按Enter键加密Service的Web.Config中的连接字符串。 aspnet_regiis.exe -pef“connectionStrings”“C: MyWCF ServiceName”
- 键入以下内容(在将突出显示的文本替换为部署网站的位置之后),然后按Enter键加密网站Web.Config中的连接字符串。 aspnet_regiis.exe -pef“connectionStrings”“C: MyWeb WebsiteName”
- 键入以下内容(在将突出显示的文本替换为网站的web.config文件可用的位置之后),然后按Enter键加载Website的Web.Config中的sessionState值。 aspnet_regiis.exe -pef“system.web / sessionState”“C: MyWeb WebsiteName”
- validation连接字符串和SessionState值是否已加密。
- 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