广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    asp.net 2.0 中加密web.config 文件中的配置节

    2018-04-03 22:13:42 次阅读 稿源:互联网
    广告

      在asp.net2.0中新增了对web.config中的部分数据进行加密的功能,可以使用RSAProtectedConfigurationProvider和DPAPIProtectedConfigurationProvider来加密,本文说明使用RSAProtectedConfigurationProvidert和计算机级别的密钥容器进行加密的步骤。

      1.         首先确定要进行加密的web.config中的配置节是否可以加密

      2.         创建RSA密钥容器

      3.         在web.config中标识要使用的密钥容器

      4.         对web.config进行加密

      5.         授予对 RSA 密钥容器的访问权限

      Step 1:首先确定要进行加密的web.config中的配置节是否可以加密
      ASP.NET 2.0支持对Web.config的部分配置节进行加密,以下配置节中的数据是不能进行加密的:

      <processModel>
      <runtime>
      <mscorlib>
      <startup>
      <system.runtime.remoting>
      <configProtectedData>
      <satelliteassemblies>
      <cryptographySettings>
      <cryptoNameMapping>
      <cryptoClasses>
       

      Step2:创建 RSA 密钥容器
      若要创建 RSA 密钥容器,请使用 ASP.NET IIS 注册工具 (Aspnet_regiis.exe) 及 pc 开关。必须为密钥容器指定一个名称,该名称标识应用程序的 Web.config 文件的 configProtectedData 节中指定的 RsaProtectedConfigurationProvider 所使用的密钥容器。为确保可以导出新创建的 RSA 密钥容器,必须包括 -exp 选项。

      例如,下面的命令创建一个名为 ABeenKeys 的 RSA 密钥容器,该容器是可导出的计算机级密钥容器。

      aspnet_regiis -pc "ABeenKeys"exp

      Step 3: Modify web.config to identify the key container
      编辑Web.config文件以标识要使用的密钥容器

      在web.config中加以<configProtectedData>来配置密钥容器, 使用名为 ABeenKeys 的计算机级 RSA 密钥容器的
      在<configuration>中加入xmlns属性

      
      <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">使用名为 ABeenKeys 的计算机级 RSA 密钥容器的 saProtectedConfigurationProvider。
        <configProtectedData >    <providers>      <add name="ABeenProvider"       type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, processorArchitecture=MSIL"      keyContainerName="ABeenKeys"/>    </providers>  </configProtectedData>
      Step 4: Encrypt the <connectionStrings> section of your web.config file
      加密你的web.config文件中的配置节

      > aspnet_regiis -pe "connectionStrings" -app "/connectionTest" 
       
      Step 5:授予对 RSA 密钥容器的访问权限
      可以通过以下代码确定应该给哪个用户权限

      Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
      默认情况下,RSA 密钥容器受到所在服务器上的 NTFS 访问控制列表 (ACL) 的严密保护。这样能够限制可以访问加密密钥的人员,从而增强加密信息的安全性。必须首先向 ASP.NET 应用程序的进程标识授予对该 RSA 密钥容器的读取访问权限,然后 ASP.NET 才能使用 RSA 密钥容器。可以使用 Aspnet_regiis.exe 工具及 -pa 开关,向 ASP.NET 应用程序的标识授予读取 RSA 密钥容器的权限。例如,下面的命令向 Windows Server 2003 NETWORK SERVICE 帐户授予对名为 ABeenKeys 的计算机级 RSA 密钥容器的读取访问权限:

      aspnet_regiis -pa "ABeenKeys" "NT AUTHORITYNETWORK SERVICE"
      注意:
       
      如果 RSA 密钥容器是用户级容器,必须以其 Windows 配置文件存储了密钥的用户的身份登录,并且必须包括 -pku 选项以授予对该用户级 RSA 密钥容器的访问权限。
       

      若要使用计算机配置中指定的默认 RsaProtectedConfigurationProvider,必须首先向应用程序的 Windows 标识授予对名为 NetFrameworkConfigurationKey 的计算机密钥容器的访问权限,该计算机密钥容器是为该默认提供程序指定的密钥容器。例如,下面的命令向 NETWORK SERVICE 帐户授予对默认 RsaProtectedConfigurationProvider 所使用的 RSA 密钥容器的访问权限。

      aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITYNETWORK SERVICE"
      NetFrameworkConfigurationKey RSA 密钥容器是 Aspnet_regiis.exe 工具所发出的命令的默认密钥容器。因此上述命令也可以按以下方式发出:

      aspnet_regiis -pa "NT AUTHORITYNETWORK SERVICE"

      代码下载http://www.cnblogs.com/Files/abeen/connectionTest.rar
      注意:我发现这个方法有个缺陷,哪就是在每次加密完后,重新启动机算机发现IIS admin出错了,还得重新安装 iis  郁闷!

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告