程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 如何使用 ASP.NET 實用工具加密憑據和會話狀態連接字符串

如何使用 ASP.NET 實用工具加密憑據和會話狀態連接字符串

編輯:關於C#
  本文分步介紹如何使用 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. 關閉注冊表編輯器。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved