加密webconfig中的连接字符串,利用RSA非对称加密,利用windows保存密钥容器


演练:创建和导出 RSA 密钥容器

Visual Studio 2010 使用受保护的配置加密配置信息。

“受保护配置”使您能够创建、删除、导出和导入自定义的加密密钥以用于 RsaProtectedConfigurationProvider 提供程序。您可以创建加密密钥的备份副本或将加密密钥复制到多台 Web 服务器(如网络场),这样即可将包含已加密 Web.config 文件的应用程序复制到多个位置。

在本演练中,您将学会如何执行以下任务:

  • 创建自定义的 RSA 密钥容器。

  • 指定使用自定义 RSA 密钥容器的“受保护配置”提供程序。

  • 使用自定义 RSA 密钥容器对 Web.config 文件的节进行加密。

  • 将自定义的 RSA 密钥容器导出到 XML 文件。

  • 从 XML 文件导入自定义的 RSA 密钥容器。

“Internet Information Services (IIS) 6.0 Technical Resources”(Internet 信息服务 (IIS) 6.0 技术资源)。

  • ASP.NET 网站。

    如果您有网站,则可以在本演练中使用该网站。否则,有关如何创建虚拟目录或网站的详细信息,请参见如何:在 IIS 5.0 和 6.0 中创建和配置虚拟目录。

  • 了解计算机级别和用户级别的 RSA 密钥容器。

    创建计算机级的 RSA 密钥容器

    1. 打开命令提示。

      • 为此,在 Microsoft Windows 中单击“开始”,再单击“运行”,在“打开”框中键入“cmd”,然后单击“确定”。

    2. 在命令提示处,通过键入以下命令将目录更改为 .NET Framework 2.0 版目录:

      “cd \WINDOWS\Microsoft.Net\Framework\v2.0.*”

    3. 通过运行带有下列选项的 aspnet_regiis.exe 来创建计算机级别的新 RSA 密钥容器:

      • -pc 选项后跟 RSA 密钥容器的名称,用于创建 RSA 密钥对。

      • -exp 选项,用于确保密钥是可导出的。

      下面的命令将创建 "MyKeys" 密钥容器。

      aspnet_regiis -pc "MyKeys" -exp

      请勿关闭“命令提示”窗口。

    RsaProtectedConfigurationProvider 类的实例,这个类使用名为 "MyKeys", 的计算机级别 RSA 密钥容器,如下面的示例所示。

       
    
       
          
             
          
       
    
       
          
       
    
    
  • 保存并关闭 Web.config 文件。

  • RsaProtectedConfigurationProvider 类的实例,并且 ASP.NET 应用程序的标识能够读取 "MyKeys",请使用 "MyKeys" 对 ASP.NET 应用程序的 Web.config 文件的节进行加密,然后 ASP.NET 在处理 Web.config 文件时会对文件的节进行解密。

    对 Web.config 文件的 节进行加密

    1. 在命令提示处,运行带有下列选项的 aspnet_regiis.exe:

      • -pe 选项,后跟 "connectionStrings",用于对应用程序的 Web.config 文件的 元素进行加密。

      • -app 选项,用于标识应用程序的名称。

      • -prov 选项后跟 "MyProvider",用于标识在上述步骤中 Web.config 文件中指定的 RsaProtectedConfigurationProvider 提供程序。

      例如,下面的命令将加密 MyApplication 应用程序的 Web.config 文件的 节。

      aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider"

    2. 打开 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=
                  
               
            
         
      
      
    3. 关闭 Web.config 文件。

    如何:在 IIS 5.0 和 6.0 中创建和配置虚拟目录中的步骤将应用程序标识为 Web 应用程序。

  • 在第二台服务器上,打开命令提示窗口,然后输入以下命令将目录更改为 .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 文件中的已解密配置设置。