Ssl
將導入的自簽名 SSL 證書配置到 SQL Server Express
我創建了一個自簽名證書並使用 SQL Server Express 進行了配置。加密在我的電腦上執行良好。
當我將證書導出到另一台 PC 時,我可以正常導入,並且可以在個人 > 證書下的 MMC 中看到證書。
但是,當我嘗試在新 PC 上使用 SQL Server Express 進行配置時,證書不會出現在下拉列表中。
有什麼建議麼?
我嘗試了其他論壇上建議的一些東西
確保導出私鑰 確保為本地系統(不是使用者)創建證書 將證書複製到受信任的證書中
到目前為止,我得到的回饋是證書 CN 值設置為它在“Server1”上創建的電腦名稱。當複製到具有不同電腦名稱“Server2”的另一台 PC 時,這將不起作用。
有沒有解決的辦法?
SQL TLS 配置 GUI 對將在下拉列表中顯示的證書非常挑剔。是的,CN 值是它挑剔的事情之一。因此,如果 CN 與伺服器名稱不匹配,即使伺服器名稱在主題備用名稱欄位中,它也不會顯示。
因此,您的第一個選擇是生成一個匹配並使用它的新自簽名證書。
另一種選擇是繞過 GUI 並通過系統資料庫設置證書。系統資料庫位置取決於所使用的 SQL 版本。我不確定 SQL Express 是否不同於完整的 SQL。但這裡是完整 SQL 2016 的位置。基本上,找到
SuperSocketNetLib
您的安裝/實例的密鑰。HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\SuperSocketNetLib
您還需要證書的證書指紋。您可以像這樣通過 PowerShell 找到它。複製證書的指紋列中的值。
dir cert:\LocalMachine\My
現在使用提升的 PowerShell 會話中的以下內容來設置指紋值並強制加密。
$regPath = 'HKLM:\Software\Microsoft\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQLServer\SuperSocketNetLib' $thumbprint = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' Set-ItemProperty $regPath -Name 'Certificate' -Value $thumbprint Set-ItemProperty $regPath -Name 'ForceEncryption' -Value 1 -Type Dword
最後,重新啟動 SQL 服務以獲取更改。