如果您指定了應由SQL Server用於TLS的證書,則SQL Server Windows服務必須讀取證書和私鑰(來自文件夾%ProgramData%\Microsoft\Crypto\RSA\MachineKeys
的文件),該證書對應證書。問題是:SQL Server配置管理器不舒服,並且它並不是所有需要的工作。
因此,首先應該本地化SQL Server使用的帳戶。應該啓動services.msc
,找到SQL Server服務的帳戶。一般來說,這是一個內置的帳戶樣Local System
,Network Service
本地或域帳戶一樣.\SQLServer
,DOMAIN\SQLServerAccount
或類似NT Service\NT Service\MSSQL$SQL2012
下面的圖片的服務帳戶:
要在私鑰帳戶授予權限可以使用mmc的證書管理單元。可以啓動mms.exe
,在「文件」菜單中選擇「添加/刪除管理單元」,選擇「證書」管理單元並選擇本地計算機的「計算機帳戶」。然後應選擇個人商店的SSL證書,然後使用上下文菜單「管理私鑰...」。
,並添加帳戶像NT Service\NT Service\MSSQL$SQL2012
,上述發現,並設置「讀取」權限的私鑰對賬:
如果你想建立連接到域內的SQL服務器(客戶端和服務器都必須屬於同一Active Directory或通過信任連接的目錄),那麼應該爲SQL服務器創建SPN。如果我正確理解您的要求,您希望允許通過HTTPS刪除連接到SQL Server。一要積極混合的安全性,以便能夠通過SQL Server身份驗證連接到服務器:
創建SQL登錄後,使所有上述改變並重新啓動SQL Server服務將能夠建立TLS(加密)連接到SQL服務器。在嘗試通過Windows帳戶連接,而無需創建SPN以前一個得到錯誤的情況下:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The target principal name is incorrect.) (Microsoft SQL Server, Error: -2146893022)
The target principal name is incorrect
如果一個忘記更改Windows身份驗證混合身份驗證(),那麼一個會得到錯誤,如
Login failed for user 'OlegKi'. (Microsoft SQL Server, Error: 18456)
如果做一個所有上述步驟可以建立TLS連接到ction使用SQL Management Studio中的例子,但人們仍然不得不選擇一些選項:
每個人都應該檢查 「加密連接」
,並設置附加的連接屬性TrustServerCertificate=true
通常一個使用Encrypt=true;TrustServerCertificate=true;
作爲建立連接的應用程序中連接字符串的一部分離子到SQL服務器。我們通過上述的「加密連接」複選框設置Encrypt=true
屬性。有關屬性的含義和選項的不同組合,可以在the MSDN article的「啓用加密」部分中閱讀。
如果一個人做所有上述步驟,並選中「加密連接」沒有設定TrustServerCertificate=true
屬性,則一個將得到錯誤:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - The target principal name is incorrect.) (Microsoft SQL Server, Error: -2146893022)
The target principal name is incorrect
,我已經在一個小的另一種情況如上所述(與Windows帳戶連接)。
我描述了上述所有步驟,因爲TLS連接到服務器的配置真的不是那麼容易,而且可以得到奇怪的錯誤,直接描述沒有直接提示如何解決問題。
您用於SQL Server Windows服務的帳戶?我想你有問題可以在'c:\ ProgramData \ Microsoft \ Crypto \ RSA \ MachineKeys'中訪問證書的私鑰。您可以打開MMC,添加證書管理單元,選擇計算機,在個人中查找SQL Server證書,選擇證書並選擇「管理私鑰」上下文菜單。之後,您應該授予您用於運行SQL Server的帳戶的權限。 – Oleg
我忘記提及該帳戶的讀取權限應該足夠。 – Oleg
如何查找我用於SQL Server服務的帳戶? – Jonah