關閉1433port上的TLS 1.0(MSSQL) 修補104743
稍微講一下怎麼關,有客戶不知道怎麼關所以教了一下。

注意,在更動所有設定前請先進行備份防止損壞或後續須調整回原設定
首先是確認你的 SQL Server 支援 TLS 1.2
確認
SQL Server版本:1
SELECT @@VERSION;SQL Server 2008 以上才有可能支援 TLS 1.2。
若是舊版(如 2008 R2 SP3 以前),需安裝 TLS 1.2 支援更新 KB3135244確認
.NET Framework版本:需至少安裝 .NET Framework 4.6 以上(內建 TLS 1.2 支援)。
在 Windows 停用 TLS 1.0(伺服器端)
方法一
- 進入
登錄編輯器:
win+R後執行:1
regedit - 找到路徑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\
建立或修改以下金鑰: - 禁用 TLS 1.0:
1
2
3[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001 - 禁用 TLS 1.1:
1
2
3[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001 - 啟用 TLS 1.2:
1
2
3[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"Enabled"=dword:00000001
"DisabledByDefault"=dword:00000000若沒有 TLS 1.0 或 TLS 1.2 子目錄,請自行建立資料夾與 DWORD。
方法二
- 使用powershell腳本
此腳本來源1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23# Learn more at https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings?tabs=diffie-hellman
Set-StrictMode -Version Latest
$base = 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\'
$protocols = [ordered]@{
"SSL 2.0" = $false
"SSL 3.0" = $false
"TLS 1.0" = $false
"TLS 1.1" = $false
"TLS 1.2" = $true
"TLS 1.3" = $true
}
foreach ($version in $protocols.Keys) {
$enabledValue = $protocols[$version]
$path = $base + $version + '\Server'
New-Item $path -Force | Out-Null
New-ItemProperty -Path $path -Name 'Enabled' -Value $enabledValue -PropertyType 'DWord' -Force | Out-Null
Write-Host "$version is $enabledValue."
}
方法三
啟用個體嚴格加密,設定Force Strict Encryption
依照圖上進行調整即可
重啟 SQL Server 與系統服務
- 執行:或直接重開機以確保新 TLS 設定生效。
1
2net stop mssqlserver
net start mssqlserver
驗證結果
用 nmap 檢查伺服器 1433 是否仍允許 TLS 1.0:
1 | |
若成功關閉,輸出中應只顯示:TLSv1.2
或使用 PowerShell 測試:
1 | |
若 TLS 1.0 關閉,舊版客戶端(僅支援 TLS 1.0)會無法連線。
如果有人來靠腰那就代表1.0不能關了關了會進不去。