如何使用 ASP.NET 实用工具加密凭据和会话状态连接字符串

文章翻译 文章翻译
文章编号: 329290 - 查看本文应用于的产品
重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
展开全部 | 关闭全部

本文内容

概要

本文分步介绍如何使用 Aspnet_setreg.exe 实用工具加密凭据和会话状态连接字符串。如果您想完成下列任一操作,Microsoft ASP.NET 版本 1.0 都会要求您将纯文本凭据存储在配置文件中:
  • 更改 ASP.NET 工作进程标识。
  • 指定一个模拟标识。
  • 指定一个用于会话状态的连接字符串。
当您应用 Microsoft 知识库文章 329250(见“参考”)中介绍的修补程序时,您可以使用存储在注册表中的加密数据而不是使用下列配置节中的纯文本内容:
  • <identity userName= password= />
  • <processModel userName= password= />
  • <sessionState stateConnectionString= sqlConnectionString= />

简介

使用 Aspnet_setreg.exe 实用工具将这些属性值加密并存储到注册表中一个安全的项下。使用带 CRYPTPROTECT_LOCAL_MACHINE 标志的 CryptProtectData 函数加密凭据。由于任何人只要具有访问此计算机的权限就可以调用 CryptUnprotectData,因此,加密的数据被存储在一个安全的、具有严格自由访问控制列表 (DACL) 的注册表项下面。当 ASP.NET 分析配置文件时,它将读取此安全的注册表项,然后使用 CryptUnprotectData 来解密数据。

在 System 标识下运行的 Inetinfo.exe 读取 <processModel /> 部分。要读取存储 ASP.NET 辅助进程用户名和密码的注册表项,System 帐户必须具有对这些项的“读取”权限。

ASP.NET 辅助进程 (Aspnet_wp.exe) 读取 <identity /> 和 <sessionState /> 部分。要读取这些注册表项,辅助进程帐户必须具有对这些项的“读取”权限。如果内容存放在“通用命名约定”(UNC) 共享上,则用于访问 UNC 共享的帐户必须具有对这些项的读取权限。

默认情况下,Aspnet_setreg.exe 创建的注册表项向 System、Administrator 和 Creator Owner 帐户授予完全控制权。您可以使用 Regedt32.exe 修改注册表项上的 DACL。应确保任意用户不能读取注册表项。

重新启动 IIS

要使您所做的更改生效,必须重新启动 Microsoft Internet 信息服务 (IIS)。重新启动 IIS 时,会启动一个新的 ASP.NET 工作进程。要重新启动 IIS,请单击“开始”,单击“运行”,在“打开”框中键入 iisreset,然后单击“确定”。

注意:如果重新配置的服务器是域控制器,则可能必须重新启动该服务器。

更多信息

下载和运行 Aspnet_setreg.exe

可以从 Microsoft 下载中心下载以下文件:

收起这个图片展开这个图片
下载
立即下载 Aspnet_setreq.exe 程序包。
发布日期:2003 年 4 月 11 日

有关如何下载 Microsoft 支持文件的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
119591 如何从联机服务获取 Microsoft 支持文件
Microsoft 已对此文件进行了病毒扫描。Microsoft 使用的是该文件发布时可以获得的最新病毒检测软件。该文件存储在安全性得到增强的服务器上,以防止在未经授权的情况下对其进行更改。

要显示所有可用的命令行参数及其用法,请在命令提示符下不使用任何命令行参数运行此工具。如果已将此工具保存在 C:\Tools\ 中,请从命令提示符处运行以下命令,以显示该工具的所有可用开关及有关这些开关的帮助:
C:\Tools>aspnet_setreg.exe

在配置文件中使用加密的属性

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。

注意:该工具在 HKEY_LOCAL_MACHINE 子树下创建注册表项。默认情况下,只有管理员才能在此子树下创建项。确保您以管理员的身份登录,以便成功创建这些注册表项。
  1. 加密将与 <identity> 部分一起使用的 userNamepassword 属性。(您也可以将此操作过程用于本文中提及的其他部分。)为此,请在命令行上键入以下命令:
    c:\Tools>aspnet_setreg.exe -k:SOFTWARE\MY_SECURE_APP\identity -u:"yourdomainname\username" -p:"password"
    该命令加密 userNamepassword 属性,并在指定的任何位置创建注册表项,然后将这些属性存储在那些注册表项中。此命令还可以生成输出内容,此内容指定如何更改您的 Web.config 或 Machine.config 文件,以便 ASP.NET 使用这些项从注册表中读取信息。

    执行此命令之后,您将收到类似于下面的输出内容:
    请编辑您的配置文件以包含以下内容:

    userName="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,userName"
    password="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,password"

    注册表项的 DACL 向 System、Administrators 和 Creator Owner 授予完全控制权限。

    如果已经为 <identity/> 配置节加密了凭据,或者为
    <sessionState/> 配置节加密了连接字符串,则确保该进程标识具有
    对注册表项的“读取”权限。而且,如果您已经相应地配置 IIS 来访问存储在
    UNC 共享上的内容,那么访问此共享的用户帐户需要具有对注册表项的“读取”权限。
    Regedt32.exe 可以用来查看或修改注册表项权限。

    您可以重命名注册表子项和注册表值来避免被发现。
  2. 请修改相应的配置文件使之指向这些注册表项。如果必须在 <identity> 节中使用这些值,则得到的 <identity> 节将类似如下内容。
    <identity impersonate="true"
    userName="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,userName"
    password="registry:HKLM\SOFTWARE\MY_SECURE_APP\identity\ASPNET_SETREG,password" />
    					
  3. 向 Aspnet_wp.exe 进程帐户授予“读取”权限。有关如何更改注册表项权限的更多信息,请参见“使用 Regedt32.exe 在这些注册表项中为 ASP.NET 帐户授予权限”一节。

使用 Regedt32.exe 在这些注册表项中为 ASP.NET 帐户授予权限

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证您可以解决这些问题。修改注册表需要您自担风险。
  1. 单击“开始”,单击“运行”,在“打开”框中键入 regedt32,然后单击“确定”。
  2. 单击
    HKEY_LOCAL_MACHINE\SOFTWARE\MY_SECURE_APP\
    子项。
  3. 在“安全性”菜单上,单击“权限”,以打开“权限”对话框。

    在 Microsoft Windows XP 或 Windows Server 2003 上,右键单击该注册表项,然后单击“权限”。
  4. 单击“添加”。在打开的对话框中,键入 yourservername\ASPNET(如果使用 Windows Server 2003 (IIS 6.0),则键入 yourservername\NetWork Service),然后单击“确定”。
  5. 确保刚才添加的帐户具有“读取”权限,然后单击“确定”。
  6. 关闭注册表编辑器。

参考

有关允许您使用本文所述功能的修补程序的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
329250 FIX:用于 processModel、标识和 sessionState 的更强凭据
有关 Microsoft Windows 注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
有关 ASP.NET 的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
315158 FIX:ASP.NET 在域控制器上使用默认 ASPNET 帐户不能正常运行
317012 ASP.NET 中的进程和请求标识

属性

文章编号: 329290 - 最后修改: 2007年10月29日 - 修订: 8.4
这篇文章中的信息适用于:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
关键字:?
kbproductlink kbdownload kbconfig kbfix kbhowtomaster kbsecurity kbstate KB329290
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com