Megosztás a következőn keresztül:


A TLS 1.3 konfigurálása

A következőkre vonatkozik: SQL Server 2022 (16.x) és újabb verziók

Ez a cikk a következő lépéseket ismerteti:

  1. 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
  2. Ellenőrizze, hogy a protokollok működőképesek-e
  3. 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."
}

Ez a kód a GitHub érhető el.

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.

  1. Nyissa meg a SQL Server hálózati konfigurációt

  2. 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 .

  3. A Jelzők lapon állítsa be a Szigorú titkosítás kényszerítése mezőt Igen értékre.

    Képernyőkép az SQL Server Configuration Manager felhasználói felületi vezérlőjéről, a protokollok konfigurálása párbeszédpanelről.

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.

TLS-bővítményszakasz képernyőképe.

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.