加密webconfig中的连接字符串,利用RSA非对称加密,利用windows保存密钥容器
演练:创建和导出 RSA 密钥容器
Visual Studio 2010 使用受保护的配置加密配置信息。“受保护配置”使您能够创建、删除、导出和导入自定义的加密密钥以用于 RsaProtectedConfigurationProvider 提供程序。您可以创建加密密钥的备份副本或将加密密钥复制到多台 Web 服务器(如网络场),这样即可将包含已加密 Web.config 文件的应用程序复制到多个位置。
在本演练中,您将学会如何执行以下任务:
-
创建自定义的 RSA 密钥容器。
-
指定使用自定义 RSA 密钥容器的“受保护配置”提供程序。
-
使用自定义 RSA 密钥容器对 Web.config 文件的节进行加密。
-
将自定义的 RSA 密钥容器导出到 XML 文件。
-
从 XML 文件导入自定义的 RSA 密钥容器。
ASP.NET 网站。
如果您有网站,则可以在本演练中使用该网站。否则,有关如何创建虚拟目录或网站的详细信息,请参见如何:在 IIS 5.0 和 6.0 中创建和配置虚拟目录。
创建计算机级的 RSA 密钥容器
-
打开命令提示。
-
为此,在 Microsoft Windows 中单击“开始”,再单击“运行”,在“打开”框中键入“cmd”,然后单击“确定”。
-
-
在命令提示处,通过键入以下命令将目录更改为 .NET Framework 2.0 版目录:
“cd \WINDOWS\Microsoft.Net\Framework\v2.0.*”
-
通过运行带有下列选项的 aspnet_regiis.exe 来创建计算机级别的新 RSA 密钥容器:
-
-pc 选项后跟 RSA 密钥容器的名称,用于创建 RSA 密钥对。
-
-exp 选项,用于确保密钥是可导出的。
下面的命令将创建 "MyKeys" 密钥容器。
aspnet_regiis -pc "MyKeys" -exp
请勿关闭“命令提示”窗口。
-
保存并关闭 Web.config 文件。
对 Web.config 文件的 节进行加密
-
在命令提示处,运行带有下列选项的 aspnet_regiis.exe:
-
-pe 选项,后跟 "connectionStrings",用于对应用程序的 Web.config 文件的
元素进行加密。 -
-app 选项,用于标识应用程序的名称。
-
-prov 选项后跟 "MyProvider",用于标识在上述步骤中 Web.config 文件中指定的 RsaProtectedConfigurationProvider 提供程序。
例如,下面的命令将加密 MyApplication 应用程序的 Web.config 文件的
节。 aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider"
-
-
打开 Web.config 文件并查看已加密的内容。
内容与下面的示例 Web.config 文件类似。
RSA Key WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo= OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE= -
关闭 Web.config 文件。
在第二台服务器上,打开命令提示窗口,然后输入以下命令将目录更改为 .NET Framework 2.0 版目录:
cd \WINDOWS\Microsoft.Net\Framework\v2.0.*
将包含已导出的 RSA 密钥容器的 .xml 文件复制到第二台 Web 服务器上的 .NET Framework 2.0 版的目录中。
在此演练中,将 keys.xml 文件复制到驱动器 C 的根目录下。
在第二台 Web 服务器的命令提示处,运行带有下列选项的 aspnet_regiis.exe:
-
-pi 选项,后跟已导出的密钥容器的名称 "MyKeys",用于导入 RSA 密钥容器。
-
包含已导出的密钥容器的 .xml 文件的路径
例如,下面的命令会导入名称为 "MyKeys" 的 RSA 密钥容器。
aspnet_regiis -pi "MyKeys" "c:\keys.xml"
在第二台 Web 服务器上,删除包含已导出的 RSA 密钥容器的 .xml 文件的副本。
在第二台 Web 服务器上,确定 ASP.NET 应用程序的标识,并按照本演练的前一部分“授予对 RSA 加密密钥的读取权限”中的步骤授予该标识对已导入的 RSA 密钥容器的访问权限。
在第二台 Web 服务器上,遵循上述部分中的步骤查看已加密 Web.config 文件中的已解密配置设置。