使用者在安裝 Windows Server 2003 Service Pack 1 後存取 IIS 6.0 或查詢 Microsoft SQL Server 2000 中的 Web 網頁時遇到驗證問題

文章翻譯 文章翻譯
文章編號: 887993 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

徵狀

升級至 Windows Server 2003 Service Pack 1 (SP1) 執行 Microsoft 網際網路資訊服務 (IIS) 6.0 或 Microsoft SQL Server 2000 一個 Microsoft Windows Server 2003 的電腦。執行這項操作以後的使用者,當它們使用 Web 應用程式或使用查詢資料庫的程式時遇到驗證問題。比方說使用者可能會遇到類似於下列其中一項的徵狀:
  • 當使用者試圖存取後端資料庫中擷取資料的 Web 網頁時,使用者會收到 「 拒絕存取 」 錯誤訊息。
  • 使用者無法連線到位於 [網路負載平衡 (NLB) 叢集的另一部資料庫伺服器。資料庫伺服器的查詢失敗。
使用者經驗可能不同,視您特定環境的徵狀。

發生的原因

如果服務主要名稱 (SPN) 的服務未通過驗證,就會發生這個問題。如果服務帳戶未註冊 SPN,未驗證 SPN。Windows Server 2003 SP1 包含儲存在下列登錄項目中的回送檢查功能:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck
預設情況下,反向迴圈核取功能已開啟在 Windows Server 2003 SP1 中且 DisableLoopbackCheck 登錄項目設定為 0 (零)。回送] 核取功能可防止程式註冊 SPN。

解決方案

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。 以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756如何備份和還原在 Windows 登錄

重要預設情況下,反向迴圈核取功能已開啟在 Windows Server 2003 SP1 中,且 DisableLoopbackCheck 登錄項目設定為 0 (零)。當您停用驗證回送檢查並開啟 Windows Server 2003 伺服器上 NTLM 在中間男人 (MITM) 攻擊,會降低安全性。若要避免 MITM 攻擊,登錄項目的值應傳回零 (0) 進行 SPN 變更後。 而且,方法 1 是慣用的解決方案。

方法 1: 在 [NTLM 驗證要求 (偏好的) 中建立可參考 [本機安全性授權主機名稱

  1. 按一下 [開始]、 按一下 [執行]、 輸入 regedit,然後按一下 [確定]]。
  2. 在 [登錄編輯程式] 中,找出並按一下下列登錄機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  3. MSV1_0] 上按一下滑鼠右鍵,指向 [新增],然後再按一下 [多字串值
  4. 鍵入 BackConnectionHostNames,並按下 ENTER。
  5. BackConnectionHostNames,] 上按一下滑鼠右鍵,然後按一下 [修改]
  6. 在 [數值資料] 方塊輸入 [主機名稱或主機名稱的網站在本機的電腦上,然後再按一下 [確定]]。
  7. 結束 [登錄編輯程式],然後重新啟動伺服器以進行這個變更才會生效。

方法 2: 停用驗證回送檢查,並以下執行服務帳戶註冊 SPN

若要解決這個問題、 停用驗證回送檢查並再註冊 SPN 與下執行服務的帳戶。若要如此做,設定 DisableLoopbackCheck 項目中
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
登錄子機碼為 1,然後再判斷 SPN 名稱。

步驟 1: 若要將 DisableLoopbackCheck 登錄項目設定為 1

  1. 按一下 [開始], 按一下 [執行],輸入 regedit,然後再按一下 [確定]
  2. 找出並點選下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
  3. DisableLoopbackCheck,] 上按一下滑鼠右鍵,然後按一下 [修改]
  4. 數值資料] 方塊輸入 1,然後再按一下 [確定]。

步驟 2: 判定 SPN 名稱

  1. 新增下列登錄項目,然後設定每個登錄項目為適當的值,如下所示:
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\LogLevel

      值: 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\LogToFile

      值: 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\KerbDebugLevel

      值: c3
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\LogLevel

      值: 1 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\LogToFile

      值: 1
    • HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa\Kerberos\Parameters\KerbDebugLevel

      值: c3
    若要加入一個登錄項目,請依照下列步驟執行:
    1. 找出並按一下您要新增登錄項目的登錄子機碼。
    2. 在 [編輯] 功能表上指向 [新增],然後按一下 [DWORD 值]。
    3. 輸入您想要新增,登錄項目名稱,然後按下 ENTER。
    4. 以滑鼠右鍵按一下登錄中加入的項目步驟 2 c,然後再按一下 [修改
    5. 輸入適當的值給該登錄項目,然後按一下 [確定]
    6. 針對您想要新增的每個登錄項目重複步驟 2a 透過 2e。
    7. 結束 「 登錄編輯程式 」。
  2. 重新啟動電腦,然後重現問題。您執行這項操作之後系統記錄檔會記錄類似下列的事件識別碼錯誤訊息:
    類型: 錯誤
    來源: Kerberos
    類別: 無
    事件識別碼: 3
    描述: A Kerberos 錯誤訊息已收到:
    在登入工作階段
    用戶端時間:
    伺服器時間: TimeDate
    錯誤代碼: 0x7 KDC_ERR_S_PRINCIPAL_UNKNOWN
    延伸的錯誤:
    用戶端領域:
    用戶端名稱:
    伺服器範圍: DomainName.com
    伺服器名稱: MSSQLSvc / DomainName.com:1433
    目標名稱: MSSQLSvc / ServerNameDomainName: 1433年 @ DomainName.com
    錯誤文字:
    檔案: 9
    線條: ab8
    錯誤資料是在記錄資料。
    判斷 SPN,從事件識別碼錯誤訊息。在這個範例中,SPN 是 MSSQLSvc / DomainName.com:1433。

步驟 3: 使用 Setspn.exe 命令列工具來註冊 SPN 到適當的服務帳戶

在 IIS 6.0 服務帳戶通常是 WWW 服務下執行之帳戶或應用程式集區使用的帳戶。在 Microsoft SQL Server 2000 服務帳戶會是 SQL Server 2000 會在下執行的帳戶。使用下列語法來新增新的 SPN:
setspn-a SPN DomainName \ AccountName

以下是如何使用 Setspn.exe 命令列工具來新增 SPN 的範例:
setspn-a MSSQLSvc/NLBNAME.corp.domain.com:1433 DomainName \ AccountName

其他相關資訊

如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
970536Windows Server 2003 的 Setspn.exe 支援工具更新


如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
837361Kerberos 通訊協定登錄項目以及在 Windows Server 2003 中的 KDC 組態索引鍵


安裝安全性更新 957097 之後,例如 SQL Server 或網際網路資訊服務 (IIS) 的應用程式可能無法進行本機 NTLM 驗證要求時。 如需有關如何解決這個問題的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
957097MS08-068: SMB 的弱點可能會允許遠端程式碼執行
請參閱知識庫文件 957097 如需詳細資訊有關如何解決問題 「 已知發出含有此安全性更新 」 一節。

屬性

文章編號: 887993 - 上次校閱: 2009年2月10日 - 版次: 4.1
這篇文章中的資訊適用於:
  • Microsoft Windows Server 2003, Web Edition
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
關鍵字:?
kbmt kbtshoot KB887993 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:887993
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