返回首页
当前位置: 主页 > 编程语言 > C#教程 >

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

时间:2015-01-05 23:50来源:电脑教程学习网 www.etwiki.cn 编辑:admin
本文分步介绍如何使用 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 程序包。 (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> 部分一起使用的 userName 和 password 属性。(您也可以将此操作过程用于本文中提及的其他部分。)为此,请在命令行上键入以下命令: 
c:/Tools>aspnet_setreg.exe -k:SOFTWARE/MY_SECURE_APP/identity -u:"yourdomainname/username" -p:"password"
该命令加密 userName 和 password 属性,并在指定的任何位置创建注册表项,然后将这些属性存储在那些注册表项中。此命令还可以生成输出内容,此内容指定如何更改您的 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. 关闭注册表编辑器。
------分隔线----------------------------
标签(Tag):c# c#技巧 c#实例教程 c#源代码 c#基础教程
------分隔线----------------------------
推荐内容
猜你感兴趣