Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók
Ez a cikk a következő lépéseket ismerteti:
- Az SQL Server 2022 (16.x) egy példányának konfigurálása a Transport Layer Security (TLS) 1.3 és a TLS 1.2 használatára
- Ellenőrizze, hogy a protokollok működőképesek-e
- Régebbi, nem biztonságos protokollok letiltása, beleértve a TLS 1.0-t és az 1.1-et
Követelmények
Az SQL Server 2022 (16.x) TLS 1.3-támogatásához a következőre van szükség:
- Windows Server 2022
- SQL Server 2022 (16.x) az 1. vagy újabb kumulatív frissítéssel
- Az SQL Server-példány a TCP/IP protokollt használja hálózati protokollként
- Érvényes X.509-kiszolgálótanúsítvány telepítve a titkos kulcsával együtt
Fontos
Ez a dokumentum feltételezi, hogy a követelmények rövid távon a TLS 1.3 és a TLS 1.2, hosszú távon pedig csak a TLS 1.3-at tartalmazzák.
SQL Server és TLS
Az SQL Server nem végez TLS-műveleteket, hanem ezt a munkát a Windows végzi Schannel SSPhasználatával. A Schannel egy biztonsági támogatási szolgáltató (SSP), amely tartalmazza és elérhetővé teszi a Microsoft által az internetes szabványos biztonsági protokollok, például a TLS implementációját. A Schannel olyan a Windowsban, mint az OpenSSL a Linuxban.
A TLS SQL Serverhez való konfigurálásához a TLS windowsos konfigurálására van szükség.
A Windows Server 2022-n futó SQL Server 2022 (16.x) esetén az SQL Server támogatja a TLS 1.0, 1.1, 1.2 és 1.3 verziót. Ennek ellenőrzéséhez használja a TlsTest GitHubon elérhető .NET-kódot. Az eszköz kimenete a következőképpen néz ki:
Trying Ssl2
Authentication failed, see inner exception.
Exception: The client and server cannot communicate, because they do not possess a common algorithm.
Trying Ssl3
Authentication failed, see inner exception.
Exception: The client and server cannot communicate, because they do not possess a common algorithm.
Trying Tls
Tls using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Trying Tls11
Tls11 using TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
Trying Tls12
Tls12 using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Trying Tls13
Tls13 using TLS_AES_256_GCM_SHA384
A Windows konfigurálása csak a TLS 1.2 és a TLS 1.3 használatára
A Windows a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL alatt található beállításkulcsokkal rendelkezik, amelyek a TLS protokollverziókat és a titkosítási csomagokat szabályozzák. Ebben a forgatókönyvben csak a kiszolgálókat érintő protokollverziók számítanak, mivel az SQL Server-példány kiszolgálóként működik.
A következő PowerShell-szkript frissíti a beállításjegyzéket, hogy engedélyezze vagy tiltsa le a TLS 1.0-t és a TLS 1.1-et, amikor a kiszolgálók használják:
Figyelmeztetés
A folytatás előtt készítsen biztonsági másolatot a beállításjegyzékről. Ez lehetővé teszi, hogy szükség esetén a jövőben visszaállítsa a beállításjegyzéket.
# 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."
}
A szkript futtatása után indítsa újra az SQL Server-folyamatot az új TLS-beállítások érvénybe lépéséhez. Ha most futtatja a cikk elején említett kódot, az a következőt adja vissza:
Trying Ssl2
Authentication failed, see inner exception.
Exception: The client and server cannot communicate, because they do not possess a common algorithm.
Trying Ssl3
Authentication failed, see inner exception.
Exception: The client and server cannot communicate, because they do not possess a common algorithm.
Trying Tls
Received an unexpected EOF or 0 bytes from the transport stream.
Exception:
Trying Tls11
Received an unexpected EOF or 0 bytes from the transport stream.
Exception:
Trying Tls12
Tls12 using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
Trying Tls13
Tls13 using TLS_AES_256_GCM_SHA384
Figyelje meg, hogy az SSL 2.0, AZ SSL 3.0, a TLS 1.0 és a TLS 1.1 nem tud csatlakozni, de a TLS 1.2 és a TLS 1.3 is sikeres.
A beállításjegyzék frissítése után a Windows és az SQL Server ezen példánya csak tLS 1.2 és TLS 1.3 kapcsolatokat engedélyez. Később, amikor több ügyfél támogatja a TLS 1.3-at, letilthatja a TLS 1.2-t is.
Az SQL Server-példány beállítása szigorú titkosítás kényszerítésére
Az utolsó lépés a példány beállítása, hogy használja a Force Strict Encryption-t. A Force Strict Encryptionesetén az SQL-példány a táblázatos adatfolyam egy támogatott verzióját használja (TDS 8.0 vagy újabb).
A beállítás beállításához használja az SQL Server Configuration Managert.
Nyissa meg a SQL Server hálózati konfigurációt
Kattintson a jobb gombbal a protokollok esetében a
<instance name>elemre, és válassza a Tulajdonságok opciót.Az alapértelmezett példánynév az MSSQLSERVER .
A Jelzők lapon állítsa be a Szigorú titkosítás kényszerítése mezőt Igen értékre.
Biztonság ellenőrzése
Ez a szakasz bemutatja, hogyan használható a Wireshark, az OpenSSL és az Nmap a titkosítás ellenőrzésére.
Wireshark
A hálózati kódolókkal meghatározhatja a TLS protokoll verzióját és a jóváhagyott titkosítási csomagot. Előfordulhat, hogy az adatok összezavarodnak. Ha megnézi a Wireshark alábbi képernyőképét, az azt mutatja, hogy a csomag egy TLS v1.3 rekordréteg, de a protokoll verziója TLS 1.2, a Kézfogási protokoll verziója szintén TLS 1.2. Ez mind a TLS 1.2 specifikáció része, és helyes és várt. A protokollal egyeztetett verzió a Bővítmények szakaszban található, és amint látható, supported_versions TLS 1.3.
OpenSSL
Az openssl használatával is felderítheti a megállapodott TLS-információkat.
Használja a következő parancsot:
openssl s_client 127.0.0.1:1433
A parancs a következő eredményeket adja vissza:
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_AES_256_GCM_SHA384
Session-ID : 516D56D99088BCDE1 <snip> 098EDB1A
Session-ID-ctx:
Resumption PSD: B2B9CB92B59aa1 <snip> BD824CBA
PSK identity: None
Nmap
Az Nmap jelenlegi, 7.94-es verziója úgy tűnik, hogy nem észleli a TLS 1.3-at a következő használatakor:
nmap -sV --script ssl-enum-ciphers -p 1433 127.0.0.1.