使用RsaProtectedConfigurationProvider进行Web.Config加密 - "错误数据"错误

use*_*777 15 asp.net encryption rsa

我正在尝试按照MSDN上描述过程加密ASP.NET 2.0 Web应用程序的Web.Config文件中的连接字符串值.使用RsaProtectedConfigurationProvider,我在我的开发机器上创建并导出了一个机器级密钥(使用-pri标志),并在Web服务器上导入密钥和授予访问权限.在通过ASP.NET测试自动解密之前,我想尝试手动解密Web.Config.

我可以分别使用-pef和-pdf参数在同一台机器上手动加密和解密Web.Config,但在Web服务器上手动解密失败并显示Bad Data错误消息.

最奇怪的是我的Web.Config文件中的keyContainerName属性似乎被忽略了.如果我尝试用乱码替换正确的值(不再对应于我创建的任何密钥容器),加密和解密仍然可以在我的开发机器上运行.有任何想法吗?

San*_*nju 7

从您的描述中,您遇到了一些关于通过可导出的RSA提供程序来解决web.config的问题,对吗?

根据RSA加密参考,我已经执行了一些本地测试,通过RSA提供程序加密web.config部分并移动到其他机器的正常过程如下:

======================第1步

创建一个机器级RSA密钥容器:aspnet_regiis -pc"MyTestKeys"-exp

第2步

授予对RSA加密密钥的读访问权限:

aspnet_regiis -pa"MyTestKeys""NT AUTHORITY\NETWORK SERVICE"

第3步

加密配置文件:aspnet_regiis -pef"connectionStrings""网站文件夹的物理路径"-prov MyRSAProvider

导出容器并使用以下步骤将其导回到其他计算机

第4步

导出机器级RSA密钥容器:aspnet_regiis -px"MyTestKeys""c:\ Config-Key.xml"-pri

第5步

将Config-Key.xml复制到第二台服务器上的c:\

第6步

在第二台服务器上导入机器级RSA密钥容器:aspnet_regiis -pi"MyTestKeys""c:\ Config-Key.xml"

第7步

授予对RSA加密密钥的读取权限:aspnet_regiis -pa"MyTestKeys""NT AUTHORITY\NETWORK SERVICE"

第8步

将加密的web.config复制到第二台服务器

========================

根据您提到的步骤,我认为您遵循的大部分流程应该是正确的.到目前为止,我建议您检查以下内容:

  1. 检查您的自定义RSA提供程序设置,以查看它是否也正确复制到目标计算机并设置为使用计算机容器

========加密配置部分=======

type ="System.Configuration.RsaProtectedConfigurationProvider,System.Configur ation,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"/>

  1. 在上述步骤中,在创建RSA密钥容器之后,需要使用"aspnet_regiis -pa"来确保某个帐户(将运行您的ASP.NET应用程序)具有对密钥容器的足够访问权限.通常,当您使用VS 2008/VS 2005测试服务器运行ASP.NET应用程序时,您使用的是登录用户(可能是管理员),但是,如果您在IIS中运行ASP.NET(或者在移动到使用其他不同进程帐户的其他服务器),您需要确保已授予某个进程帐户权限.

您可以检查它们以查看问题是否是由于其中一些问题造成的.

真诚的,Sanjay Manju suman


KG *_*osa 0

实际上,您可以使用 Microsoft 的 EL 来加密您的连接字符串。您可以在这里下载: http: //www.codeplex.com/entlib