如何使用 ASP.NET 公用程式加密認證及工作階段狀態的連接字串

文章翻譯 文章翻譯
文章編號: 329290 - 檢視此文章適用的產品。
重要:本文包含有關修改登錄的相關資訊。修改登錄之前,請務必做好備份工作,並瞭解如何在發生問題時還原登錄。如需有關如何備份、還原和修改登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
256986 Microsoft Windows 登錄說明
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何使用 Aspnet_setreg.exe 公用程式加密認證及工作階段狀態的連接字串。如果您要執行下列任何一項工作,ASP.NET 1.0 版會要求您在設定檔中儲存純文字的認證:
  • 變更 ASP.NET 工作者處理序身分。
  • 指定模擬身分。
  • 指定工作階段狀態的連接字串。
當您套用「Microsoft 知識庫」文件 329250 (請參閱<參考>一節) 中所述的 Hotfix 時,就可以使用登錄中儲存的加密資料,來取代下列設定區段中的純文字:
  • <identity userName= password= />
  • <processModel userName= password= />
  • <sessionState stateConnectionString= sqlConnectionString= />

簡介

您可以使用 Aspnet_setreg.exe 公用程式為這些屬性值加密,並儲存到登錄中的安全機碼下。這個公用程式會使用 CryptProtectData 函式搭配 CRYPTPROTECT_LOCAL_MACHINE 旗標來加密認證。由於任何能存取電腦的人都可以呼叫 CryptUnprotectData,因此加密的資料會儲存在具有強力判別存取控制清單 (Discretionary Access Control List,DACL) 的安全登錄機碼下。當 ASP.NET 剖析設定檔時,會讀取安全登錄機碼,然後使用 CryptUnprotectData 將資料解密。

以系統身分執行的 Inetinfo.exe 會讀取 <processModel /> 區段。如果要讀取儲存 ASP.NET 工作者處理序之使用者名稱和密碼的登錄機碼,「系統」帳戶必須具有這些機碼的「讀取」權限。

ASP.NET 工作者處理序 (Aspnet_wp.exe) 會讀取 <identity /> 和 <sessionState /> 區段。如果要讀取這些登錄機碼,工作者處理序帳戶必須具有這些機碼的「讀取」權限。如果內容是在「通用命名慣例」(Universal Naming Convention,UNC) 的共用上,則用來存取 UNC 共用的帳戶必須具有這些機碼的讀取權限。

根據預設,Aspnet_setreg.exe 建立的登錄機碼會授予「系統」、「系統管理員」和「建立者擁有者」帳戶完全控制權。您可以使用 Regedt32.exe 修改登錄機碼上的 DACL,如此可確保其他使用者無法讀取這些登錄機碼。

重新啟動 IIS

如需讓變更生效,您必須重新啟動 Microsoft Internet Information Services (IIS)。藉由重新啟動 IIS 的動作,您會啟動新的 ASP.NET 工作者處理序。如果要執行這項操作,請依序按一下 [開始][執行],然後在 [開啟] 方塊中輸入 iisreset,再按一下 [確定]

注意:如果您已重新設定的伺服器是網域控制站,則可能必須重新啟動該伺服器。

其他相關資訊

下載和執行 Aspnet_setreg.exe

您可以從「Microsoft 下載中心」下載下列檔案:

摺疊此圖像展開此圖像
下載
立即下載 Aspnet_setreg.exe 套件。
發行日期:2003 年 4 月 11 日

如需有關如何下載 Microsoft 支援檔案的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
119591 如何從線上服務取得 Microsoft 支援檔案
Microsoft 已對這個檔案做過病毒的掃描。Microsoft 是利用發佈當日的最新病毒偵測軟體來掃描檔案,看看有沒有病毒感染。檔案會儲存在安全的伺服器上,以避免任何未經授權的更改。

如果要顯示所有可用的命令列參數及其使用方式,請從命令提示執行此工具,但不使用任何命令列參數。如果您將此工具儲存到 C:\Tools\,請從命令提示執行下列命令,以顯示所有可用參數以及參數的說明:
C:\Tools>aspnet_setreg.exe

在設定檔中使用加密的屬性

警告:如果您使用「登錄編輯程式」或其他方法不當地修改登錄,可能會發生嚴重問題。您可能需要重新安裝作業系統,才能解決這些問題。Microsoft 不保證可以解決這些問題。請自行承擔修改登錄的一切風險。

注意:此工具會在 HKEY_LOCAL_MACHINE 樹狀子目錄下建立登錄機碼。根據預設,只有系統管理員才能在此樹狀子目錄下建立機碼。請確定您已登入為系統管理員,以便成功建立這些登錄機碼。
  1. userNamepassword 屬性加密,以便與 <identity> 區段搭配使用 (您也可以針對本文中提及的其他區段執行這項操作)。如果要執行這項操作,請在命令列輸入下列命令:
    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 會授予「系統」、「系統管理員」和「建立者擁有者」完全控制權。

    如果您已經為 <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. 結束 [登錄編輯程式]。

?考

如需有關可讓您使用本文中所述功能之 Hotfix 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
329250 FIX:processModel、identity 和 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