Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro: SQL Server 2022 (16.x) a novější verze
Tento článek vysvětluje, jak:
- Konfigurace instance SQL Serveru 2022 (16.x) pro použití protokolu TLS (Transport Layer Security) 1.3 a TLS 1.2
- Ověřte, že protokoly jsou funkční.
- Zakázání starších nezabezpečených protokolů včetně protokolů TLS 1.0 a 1.1
Požadavky
Podpora protokolu TLS 1.3 v SQL Serveru 2022 (16.x) vyžaduje:
- Windows Server 2022
- SQL Server 2022 (16.x) s kumulativní aktualizací 1 nebo novější
- Instance SQL Serveru používá protokol TCP/IP jako síťový protokol.
- Platný certifikát serveru X.509 nainstalovaný spolu s jeho privátním klíčem
Důležitý
Tento dokument předpokládá, že vaše požadavky zahrnují protokol TLS 1.3 i TLS 1.2 v krátkodobém horizontu a pouze protokol TLS 1.3 v dlouhodobém horizontu.
SQL Server a TLS
SQL Server neprovádí samotné operace TLS, ale tato práce se provádí systémem Windows pomocí zprostředkovatel zabezpečení Schannel. Schannel je poskytovatel zabezpečení (SSP), který obsahuje a vystavuje implementaci internetových standardních protokolů zabezpečení od Microsoftu, jako je TLS. Schannel je pro Windows to, co OpenSSL pro Linux.
Konfigurace protokolu TLS pro SQL Server vyžaduje konfiguraci protokolu TLS pro Windows.
SQL Server 2022 (16.x) ve Windows Serveru 2022 podporuje protokol TLS 1.0, 1.1, 1.2 a 1.3. K ověření použijte kód .NET dostupný v GitHubu v TlsTest. Výstup nástroje vypadá takto:
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
Konfigurace Windows tak, aby používala jenom protokol TLS 1.2 a TLS 1.3
Systém Windows má sadu klíčů registru v rámci HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL, které řídí verze protokolu TLS a šifrovací sady. Pro tento scénář platí pouze verze protokolu, které ovlivňují servery, protože instance SQL Serveru funguje jako server.
Následující skript PowerShellu aktualizuje registr, aby povolil nebo zakázal používání protokolu TLS 1.0 a TLS 1.1 servery:
Varování
Než budete pokračovat, zálohujte registr. V případě potřeby budete moct registr obnovit.
# 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."
}
Tento kód je k dispozici v GitHubu .
Po spuštění tohoto skriptu restartujte proces SQL Serveru, aby se projevilo nové nastavení protokolu TLS. Pokud teď spustíte kód uvedený na začátku článku, vrátí se:
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
Všimněte si, že protokoly SSL 2.0, SSL 3.0, TLS 1.0 a TLS 1.1 se nepodaří připojit, ale oba protokoly TLS 1.2 a TLS 1.3 jsou úspěšné.
Po aktualizaci registru povolí Systém Windows a tato instance SQL Serveru pouze připojení TLS 1.2 a TLS 1.3. Později, když více klientů podporuje protokol TLS 1.3, můžete také zakázat protokol TLS 1.2.
Nastavení instance SQL Serveru na vynucení striktního šifrování
Posledním krokem je nastavení instance tak, aby používala Force Strict Encryption. V Force Strict Encryptionpoužívá instance SQL podporovanou verzi tabulkového datového streamu (TDS 8.0 nebo novější).
K nastavení tohoto nastavení použijte SQL Server Configuration Manager.
Rozbalte konfigurace sítě SQL Serveru.
Klikněte pravým tlačítkem na Protokoly pro
<instance name>a vyberte VlastnostiVýchozí název instance je MSSQLSERVER.
Na kartě Příznaky nastavte možnost Vynucení přísného šifrování na hodnotu Ano
Ověření zabezpečení
Tato část ukazuje, jak k ověření šifrování použít Wireshark, OpenSSL a Nmap.
Wireshark
K určení verze protokolu TLS a odsouhlasené šifrové sady můžete použít síťové výsečky. Některá data můžou být matoucí. Pokud se podíváte na snímek obrazovky níže z Wiresharku, ukazuje, že paket spadá pod vrstvu protokolu TLS verze 1.3 Record Layer, ale verze protokolu je TLS 1.2 a verze protokolu Handshake je také TLS 1.2. Toto je veškerá součást specifikace TLS 1.2 a je správná a očekávaná. Odsouhlasená verze protokolu je v části Rozšíření a jak vidíte, supported_versions je TLS 1.3.
OpenSSL
Můžete také použít openssl ke zjištění odsouhlasených informací protokolu TLS.
Použijte následující příkaz:
openssl s_client 127.0.0.1:1433
Příkaz vrátí výsledky jako:
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
Aktuální verze Nmap verze 7.94 se zdá, že při použití nerozpozná protokol TLS 1.3:
nmap -sV --script ssl-enum-ciphers -p 1433 127.0.0.1.
Související obsah
- Připojení k SQL Serveru s přísným šifrováním
- zabezpečení transportní vrstvy a digitální certifikáty
- požadavky na certifikát pro SQL Server
- Konfigurace databázového stroje SQL Serveru pro šifrování připojení
- podpora protokolu TLS 1.3
- TDS 8.0
- nastavení registru protokolu TLS (Transport Layer Security)