`
tiandirensoon
  • 浏览: 595897 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多
文章编号 : 329290
最后修改 : 2006年4月10日
修订 : 8.0
重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
256986(http://support.microsoft.com/kb/256986/)MicrosoftWindows注册表说明

概要

本文分步介绍如何使用Aspnet_setreg.exe实用工具加密凭据和会话状态连接字符串。如果您想完成下列任一操作,MicrosoftASP.NET版本1.0都会要求您将纯文本凭据存储在配置文件中:
更改ASP.NET工作进程标识。
指定一个模拟标识。
指定一个用于会话状态的连接字符串。
当您应用Microsoft知识库文章329250(见“参考”)中介绍的修补程序时,您可以使用存储在注册表中的加密数据而不是使用下列配置节中的纯文本内容:
<identityuserName=password=/>
<processModeluserName=password=/>
<sessionStatestateConnectionString=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和CreatorOwner帐户授予完全控制权。您可以使用Regedt32.exe修改注册表项上的DACL。应确保任意用户不能读取注册表项。

重新启动IIS

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

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

更多信息

下载和运行Aspnet_setreg.exe

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

下载立即下载Aspnet_setreq.exe程序包。(http://download.microsoft.com/download/2/9/8/29829651-e0f0-412e-92d0-e79da46fd7a5/aspnet_setreg.exe)
发布日期:2003年4月11日

有关如何下载Microsoft支持文件的更多信息,请单击下面的文章编号,以查看Microsoft知识库中相应的文章:
119591(http://support.microsoft.com/kb/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和CreatorOwner授予完全控制权限。

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

您可以重命名注册表子项和注册表值来避免被发现。
2. 请修改相应的配置文件使之指向这些注册表项。如果必须在<identity>节中使用这些值,则得到的<identity>节将类似如下内容。
<identityimpersonate="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. 在“安全性”菜单上,单击“权限”,以打开“权限”对话框。

在MicrosoftWindowsXP或WindowsServer2003上,右键单击该注册表项,然后单击“权限”。
4. 单击“添加”。在打开的对话框中,键入yourservername/ASPNET(如果使用WindowsServer2003(IIS6.0),则键入yourservername/NetWorkService),然后单击“确定”。
5. 确保刚才添加的帐户具有“读取”权限,然后单击“确定”。
6. 关闭注册表编辑器。

参考

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

相关推荐

Global site tag (gtag.js) - Google Analytics