SQL Server Cannot Generate SSPI & 目標主體名稱不正確。無法產生 SSPI 內容
2022-05-03
筆記 SQL Server 「目標主體名稱不正確。無法產生 SSPI 內容。」 的處理可能方式之一 😎
How to deal with "Cannot generate SSPI context", one of possible solutions.
說明
「目標主體名稱不正確。無法產生 SSPI 內容。」"Cannot generate SSPI context",這個錯誤訊息在網路上也許多的處理討論,包含保哥所分享的 VPN 連線後 SQL Server 發生「無法產生 SSPI 內容」錯誤 以及在 SQL PASS Taiwan 社群的 討論。
但對於這個錯誤,大家的情境不同,處理方式也不同。唯一能夠確定的是這個錯誤是發生在與 SQL Server 資料庫連線採用 Windows 驗證的方式,才會發生。而 Windows 驗證走的是 Kerberos 以及 NTLM 協定,所以問題也可能是發生在協定上。
本次筆者所碰到的情境是資料庫伺服器原本好端端的,但在作業系統更新之後,從遠端使用 SSMS 連線資料庫,就會報 「目標主體名稱不正確。無法產生 SSPI 內容。」 的錯誤訊息。
參考微軟在 "Cannot generate SSPI context" error when using Windows authentication to connect SQL Server 的處理指南,建議使用 Kerberos Configuration Manager 來釐清問題。
筆者首先使用 IIS Crypto 檢查目前伺服器支援的 Schannel,發現 Hashes 以及 Cipher Suites 都不是預期的組態,所以設定為 Best Practices 後重新啟動 Server,神奇的是資料庫伺服器就可以正常連線了。更神奇的是 Server Protocols、Ciphers、Hashes 在 Best Practices 後的設定,仍被伺服器的設定蓋掉,例如 Client Protocols 原本希望支援 TLS 1.0、Hashes 希望支援 MD5。只有 Cipher Suties 當中的設定有被保存。
但資料庫已經可以正常連線,不在報 「目標主體名稱不正確。無法產生 SSPI 內容。」錯誤訊息 😮