加密web.config 导入导出密钥一些资料

http://msdn.microsoft.com/zh-cn/library/53tyfkaw(VS.80).aspx

 

  • 情景1:使用缺省的密钥容器(NetFrameworkConfigurationKey)加密 Web.config 文件的 ConnectionStrings节
    aspnet_regiis -pe "connectionStrings" -app "/WebApp"
    注意:要用站点的虚拟目录路径替换 /WebApp
  • 解密使用缺省的密钥容器(NetFrameworkConfigurationKey)加密的 Web.config 文件的 ConnectionStrings节
    aspnet_regiis -pd "connectionStrings" -app "/WebApp"
  •  确定 ASP.NET 应用程序的标识
    在站点根目录新建一个页面,保存为 Identity.aspx,内容如下
    <%
    Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
    %>
    在浏览器中打开该文件,将显示该站点的 ASP.NET 应用程序的标识。
  • 授予 ASP.NET 应用程序标识对缺省 RSA 密钥容器的访问权限
    aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
    注意:要用 Identity.aspx 中显示的 ASP.NET 应用程序标识替换 NT AUTHORITY\NETWORK SERVICE
  • 删除 ASP.NET 应用程序标识对缺省 RSA 密钥容器的访问权限
    aspnet_regiis -pr "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
  • 情景2:创建自定义的密钥容器,例如:MyKeys
    aspnet_regiis -pc "MyKeys" -exp
  • 指定“受保护配置”提供程序的实例,在 Web.config 文件中添加 <configProtectedData> 节,其中包括名为 "MyProvider" 的 RsaProtectedConfigurationProvider 类的实例,这个类使用名为 MyKeys 的计算机级别 RSA 密钥容器
    <configuration>
       
    <configProtectedData>
          
    <providers>
             
    <add name="MyProvider"
                  type
    ="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
                  keyContainerName
    ="MyKeys" useMachineContainer="true" />
          
    </providers>
       
    </configProtectedData>

       
    <connectionStrings>
          
    <add name="MsPetShop" connectionString="Server=(local);Initial Catalog=MsPetShop;User Id=DbUser;Password=pass@word1" />
       
    </connectionStrings>
    </configuration>
  • 使用自定义的密钥提供程序(MyProvider)加密 Web.config 文件的 ConnectionString节
    aspnet_regiis -pe "connectionStrings" -app "/WebApp" -prov "MyProvider"
  • 解密使用自定义的密钥提供程序(MyProvider)加密 Web.config 文件的 ConnectionString节
    aspnet_regiis -pd "connectionStrings" -app "/WebApp"
    提示:解密的时候不需要 -prov "MyProvider" 参数,但服务器应该已经导入自定义的 MyKeys 密钥容器,否则无法解密。参考下面的导入方法。
  • 导出自定义 MyKeys 密钥容器,以便在另一台服务器导入
    aspnet_regiis -px "MyKeys" "c:\keys.xml" -pri
  • 在另一台服务器导入自定义 MyKeys 密钥容器
    aspnet_regiis -pi "MyKeys" "c:\keys.xml"
    警告:为防止非授权用户对 Web.config 文件进行解密,不应该将此密钥容器文件长期存放在 Web站点服务器!导入完成后应该将此 xml 文件存放到另一台计算机作为备份。
  • 授予 ASP.NET 应用程序标识对自定义 MyKeys 密钥容器的访问权限
    aspnet_regiis -pa "MyKeys" "NT AUTHORITY\NETWORK SERVICE"
    注意:要用 Identity.aspx 中显示的 ASP.NET 应用程序标识替换 NT AUTHORITY\NETWORK SERVICE
  • 删除 ASP.NET 应用程序标识对自定义 MyKeys 密钥容器的访问权限
    aspnet_regiis -pr "MyKeys" "NT AUTHORITY\NETWORK SERVICE"
  • 情景3:删除自定义的 MyKeys 密钥容器
    aspnet_regiis -pz "MyKeys"

 如果要加密system.net/mailSettings/smtp

aspnet_iis pef "system.net/mailSetting/smtp" "d:\membership"

posted @ 2009-12-30 12:22  teacherzj  阅读(226)  评论(0编辑  收藏  举报