本文分步介绍如何使用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>部分一起使用的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和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中的进程和请求标识
相关推荐
asp.net 字符串加密减密 用的是密钥加密
ASP.NET Oracle字符串连接符
ASP.NET连接各种数据库的连接字符串总结,包括Access ,Excel,SQL Server,ODBC,Oracle
NULL 博文链接:https://heisetoufa.iteye.com/blog/395558
Asp.net 2.0 各种数据库连接字符串集合
讲述asp.net生命周期中回话状态的作用,意义,以及编程方法。
asp.net MD5加密
一个简单的字符串加密解密组件。 里面~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~····
【ASP.NET编程知识】.net core使用MD5加密解密字符串.docx
asp.net asp.net加密 webservice加密 解密 详细源代码参考
asp.net截取字符串方法 使用字节精确计算 计算空格 直接复制使用 简单
【ASP.NET编程知识】ASP.NET web.config中 数据库连接字符串加密解密.docx
如何在ASP和ASP.NET中共享会话状态,马文婕,李娜,ASP.NET的出现大大提高了编写的站点的性能,但传统的ASP技术也需要同时应用,两种技术间会话状态的共享是必须解决的问题。文章即对�
asp.net密码加密asp.net密码加密asp.net密码加密
md5加密 sha1加密 asp.net加密字符串加密
专门asp.net 密码加密实例。 后台数据库密码加密MD5
Web程序设计 : ASP.NET实用网站开发 .pdf
Web程序设计--ASP.NET实用网站开发课后填空题,是非题,选择题答案
编程是方便测试用的asp.net 加密解密工具!