SQL Server 服務因“壞”而關閉?SSL 證書
今天早上發現在 Win2012 上執行的 SQL Server 2012 服務已自行關閉。當我以伺服器管理員身份登錄並嘗試訪問 SSMS 時,輸入憑據後出現“傳輸”錯誤。在檢查 Windows 服務時,SQL Server 和代理均已停止。我試圖啟動它們,但出現超時錯誤。
SQL 事件日誌包含以下條目:
伺服器無法載入啟動 SSL 連接所需的證書。它返回以下錯誤:0x8009030d。檢查證書以確保它們有效。
Windows 事件日誌包含以下條目:
日誌名稱:應用程序
來源:MSSQLSERVER
日期:14/03/2013 09:01:40
說明:無法載入使用者指定的證書
$$ Cert Hash(sha1) “A1CF6EE1C352B7A185950EB400013269759C24BD” $$. 伺服器將不接受連接。您應該驗證證書是否已正確安裝。請參閱聯機叢書中的“配置證書以供 SSL 使用”。 說明:TDSSNIClient 初始化失敗,錯誤為 0x80092004,狀態碼 0x80。原因:無法初始化 SSL 支持。找不到對像或屬性。
說明:TDSSNIClient 初始化失敗,錯誤為 0x80092004,狀態碼 0x1。原因:初始化因基礎結構錯誤而失敗。檢查以前的錯誤。找不到對像或屬性。
描述:由於網路庫中存在內部錯誤,無法啟動網路庫。要確定原因,請查看錯誤日誌中緊接此錯誤之前的錯誤。
說明:SQL Server 無法生成 FRunCommunicationsManager 執行緒。檢查 SQL Server 錯誤日誌和 Windows 事件日誌以獲取有關可能的相關問題的資訊。
以下過程解決了該問題:
- 開始 > SQL Server 配置管理器
- SQL Server 網路配置 > MSSQLSERVER 協議(屬性)
- 取消選中正常 > 強制加密
- 開始 > 服務 > 啟動 MSSQLSERVER 服務
更新:
以上僅解決了問題,直到下一次重新啟動,它再次發生。顯然 SSL 證書需要 SQL2012 讀取的權限,但我不敢繼續重啟,直到這個問題得到修復,所以現在通過 RDC 而不是通過 SSL 的 SSMS 訪問。
有一些應用程序可以更改機器密鑰集容器文件夾上的 ACL。發生這種情況時,合法的密鑰集使用者將失去對這些密鑰集的訪問權。請參閱KB 278381:MachineKeys 文件夾的預設權限以獲取正確的權限集。
如果您需要絕對確認,請參閱BUG:當 SQL Server 2005 在網路服務帳戶下執行時,您無法使用證書啟用加密以獲得“解決方法”(它涉及編譯將正確重置 ACL 的 C++ 應用程序……) . 但是您可以根據提到的 KB278381 簡單地設置 ACL,看看問題是否消失。
更多相關知識庫:
- 對等框架 API 返回“PEER_E_NO_KEY_ACCESS”錯誤消息
- 如何對數據保護 API (DPAPI) 進行故障排除
- 使用 Service Broker 或數據庫鏡像連接到 SQL Server 2005 實例時出現錯誤消息:“連接握手失敗”
我還沒有找到哪個應用程序更改了 ACL。我的錢花在了一些防病毒應用程序上。不要問我是怎麼知道所有這些隨機的不同資訊的……
我使用了這裡提到的解決方案。它對我有用。
- 檢查 SQL Server 服務帳戶名稱。
- 檢查並驗證證書名稱。(在 SQL Server 配置管理器 –> SQL Server 網路配置 –> MSSQLSERVER 的協議 –> 右鍵點擊此處並轉到屬性 –> 在“證書”選項卡中,您可以看到證書名稱。)
- 轉到“執行”,輸入“MMC”,然後按“Enter”。
- 轉到“文件”-> 添加/刪除管理單元。
- 選擇“證書”並點擊“添加”按鈕。選擇適當的選項(從“我的使用者帳戶/服務帳戶/電腦帳戶”中)。
- 點擊“添加或刪除管理單元”視窗螢幕上的“確定”按鈕。
- 在“Console1”視窗中,轉到“Console Root”選項。
- 展開“證書”–> 人員–> 證書。
在這裡,您將看到證書列表。
- 轉到證書(在步驟 2 中配置)
- 右鍵點擊它並轉到“所有任務”-> 管理私鑰…
- 點擊“添加”按鈕並在此處添加 SQL 服務帳戶(從步驟 1 開始)。授予此帳戶的所有權限。
- 現在,嘗試啟動 SQL 服務。