Delen via


SQL Server Database Engine configureren voor het versleutelen van verbindingen

van toepassing op:SQL Server- - alleen Windows

U kunt alle binnenkomende verbindingen met SQL Server versleutelen of versleuteling inschakelen voor slechts een specifieke set clients. Voor een van deze scenario's moet u eerst SQL Server configureren om een certificaat te gebruiken dat voldoet aan certificaatvereisten voor SQL Server voordat u extra stappen uitvoert op de servercomputer of clientcomputers om gegevens te versleutelen.

Notitie

Dit artikel is van toepassing op SQL Server in Windows. Zie TLS-instellingen opgevenom SQL Server in Linux te configureren voor het versleutelen van verbindingen.

In dit artikel wordt beschreven hoe u SQL Server configureert voor certificaten (stap 1) en versleutelingsinstellingen van het SQL Server-exemplaar wijzigt (stap 2). Beide stappen zijn vereist voor het versleutelen van alle binnenkomende verbindingen met SQL Server wanneer u een certificaat van een openbare commerciële instantie gebruikt. Zie Speciale gevallen voor het versleutelen van verbindingen met SQL Servervoor andere scenario's.

Stap 1: SQL Server configureren voor het gebruik van certificaten

Voer de volgende stappen uit om SQL Server te configureren voor het gebruik van de certificaten die worden beschreven in certificaatvereisten voor SQL Server:

  1. Installeer het certificaat op de computer waarop SQL Server wordt uitgevoerd.
  2. Configureer SQL Server om het geïnstalleerde certificaat te gebruiken.

Afhankelijk van de versie van SQL Server Configuration Manager waar u toegang tot hebt op de SQL Server-computer, gebruikt u een van de volgende procedures om het SQL Server-exemplaar te installeren en te configureren.

Computers met SQL Server Configuration Manager voor SQL Server 2019 en latere versies

In SQL Server 2019 (15.x) en latere versies is certificaatbeheer geïntegreerd in SQL Server Configuration Manager en kan worden gebruikt met eerdere versies van SQL Server. Als u een certificaat wilt toevoegen aan één SQL Server-exemplaar, in een failoverclusterconfiguratie of in een configuratie van een beschikbaarheidsgroep, raadpleegt u Certificaatbeheer (SQL Server Configuration Manager). Configuration Manager vereenvoudigt het beheer van certificaten aanzienlijk door het certificaat te installeren en SQL Server te configureren voor het gebruik van het geïnstalleerde certificaat met slechts een paar stappen.

Certificaten worden lokaal opgeslagen voor de gebruikers op de computer. Als u een certificaat wilt installeren dat SQL Server moet gebruiken, moet u SQL Server Configuration Manager uitvoeren met een account met lokale beheerdersbevoegdheden.

U kunt tijdelijk een Express-editie van SQL Server 2019 (15.x) of een nieuwere versie installeren om SQL Server Configuration Manager te gebruiken, dat geïntegreerd certificaatbeheer ondersteunt.

Computers met SQL Server Configuration Manager voor SQL Server 2017 en eerdere versies

Als u SQL Server 2017 (14.x) of een eerdere versie gebruikt en SQL Server Configuration Manager voor SQL Server 2019 (15.x) niet beschikbaar is, volgt u deze stappen om het certificaat op de SQL Server-computer te installeren en te configureren:

  1. Selecteer in het menu StartUitvoerenen typ in het vak OpenMMC en selecteer OK.
  2. Selecteer in de MMC-console het menu Bestand en kies Snap-in toevoegen/verwijderen....
  3. Selecteer in het dialoogvenster Modules toevoegen of verwijderen de optie Certificatenen selecteer vervolgens Toevoegen.
  4. Selecteer in het dialoogvenster CertificatenmoduleComputeraccounten selecteer vervolgens Volgende>Voltooien.
  5. Selecteer in het dialoogvenster 'Modules toevoegen of verwijderen' de knop OK.
  6. Vouw in de MMC-console Certificaten (lokale computer)>Personaluit, klik met de rechtermuisknop op Certificaten, wijs Alle takenaan en selecteer Importeren.
  7. Voltooi de Wizard Certificaat Importeren om een certificaat toe te voegen aan de computer.
  8. Klik in de MMC-console met de rechtermuisknop op het geïmporteerde certificaat, wijs Alle takenaan en selecteer Persoonlijke sleutels beheren. Voeg in het dialoogvenster Security leesmachtiging toe voor het gebruikersaccount dat wordt gebruikt door het SQL Server-serviceaccount.
  9. Vouw in SQL Server Configuration ManagerSQL Server-netwerkconfiguratieuit, klik met de rechtermuisknop op protocollen voor <serverexemplaren>en selecteer Eigenschappen.
  10. Selecteer in het dialoogvenster Protocollen voor <exemplaarnaam> Eigenschappen op het tabblad Certificaat het gewenste certificaat in de vervolgkeuzelijst voor het vak Certificaat en selecteer vervolgens OK.
  11. Als u wilt dat alle verbindingen met SQL Server worden versleuteld, raadpleegt u stap 2: Versleutelingsinstellingen configureren in SQL Server. Als u alleen versleuteling voor specifieke clients wilt inschakelen, start u de SQL Server-service opnieuw op en raadpleegt u Speciale gevallen voor het versleutelen van verbindingen met SQL Server.

Notitie

Als u certificaten wilt installeren in de configuratie van de beschikbaarheidsgroep, herhaalt u de vorige procedure op elk knooppunt in uw beschikbaarheidsgroep, te beginnen met het primaire knooppunt.

Belangrijk

Het SQL Server-serviceaccount moet leesmachtigingen hebben voor het certificaat dat wordt gebruikt om versleuteling op het SQL Server-exemplaar af te dwingen. Voor een serviceaccount zonder bevoegdheden moeten leesmachtigingen worden toegevoegd aan het certificaat. Als u dit niet doet, kan het opnieuw opstarten van de SQL Server-service mislukken.

Extra procedure voor failoverclusterexemplaren

Het certificaat dat door SQL Server wordt gebruikt om verbindingen te versleutelen, wordt opgegeven in de volgende registersleutel:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.x\MSSQLServer\SuperSocketNetLib\Certificate

Deze sleutel bevat een eigenschap van het certificaat dat een vingerafdruk wordt genoemd, waarmee elk certificaat op de server wordt geïdentificeerd. In een geclusterde omgeving is deze sleutel ingesteld op Null, ook al bestaat het juiste certificaat in het archief. U kunt dit probleem oplossen door deze extra stappen uit te voeren op elk van uw clusterknooppunten nadat u het certificaat op elk knooppunt hebt geïnstalleerd:

  1. Navigeer naar het certificaatarchief waar het FQDN-certificaat (Fully Qualified Domain Name) is opgeslagen. Ga op de eigenschappenpagina voor het certificaat naar het tabblad Details en kopieer de vingerafdrukwaarde van het certificaat naar een Kladblokvenster.

  2. Verwijder de spaties tussen de hextekens in de vingerafdrukwaarde in Kladblok.

  3. Start Register-editor, navigeer naar de volgende registersleutel en plak de waarde uit stap 2:

    HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib\Certificate

  4. Als de virtuele SQL-server zich momenteel op dit knooppunt bevindt, voert u een failover uit naar een ander knooppunt in uw cluster en start u het knooppunt waarop de registerwijziging heeft plaatsgevonden opnieuw.

  5. Herhaal deze procedure op alle knooppunten.

Waarschuwing

Het onjuist bewerken van het register kan uw systeem ernstig beschadigen. Voordat u wijzigingen aanbrengt in het register, raden we u aan een back-up te maken van waardegegevens op de computer.

Notitie

SQL Server 2008 R2 (10.50.x) en SQL Server 2008 R2 (10.50.x) Native Client (SNAC) ondersteunen jokertekencertificaten. SNAC is sindsdien afgeschaft en vervangen door het Microsoft OLE DB-stuurprogramma voor SQL Server en Microsoft ODBC-stuurprogramma voor SQL Server. Andere clients ondersteunen mogelijk geen jokertekencertificaten.

Een jokertekencertificaat kan niet worden geselecteerd via SQL Server Configuration Manager. Als u een jokertekencertificaat wilt gebruiken, moet u de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer\SuperSocketNetLib registersleutel bewerken en de vingerafdruk van het certificaat, zonder spaties, invoeren in de certificaatwaarde.

Notitie

Als u versleuteling wilt gebruiken met een failovercluster, moet u het servercertificaat installeren met de volledig gekwalificeerde DNS-naam van de virtuele server op alle knooppunten in het failovercluster. U kunt de waarde van de ForceEncryption-optie instellen in het eigenschappenvenster Protocols for virtsql van SQL Server Netwerkconfiguratie naar Ja.

Wanneer u versleutelde verbindingen maakt voor een Azure Search-indexer naar SQL Server op een Azure Virtual Machine, raadpleegt u Indexerkoppelingen met een SQL Server-instance op een Azure Virtual Machine.

Stap 2: Versleutelingsinstellingen configureren in SQL Server

De volgende stappen zijn alleen vereist als u versleutelde communicatie voor alle clients wilt afdwingen:

  1. Vouw in SQL Server Configuration Manager SQL Server-netwerkconfiguratieuit, klik met de rechtermuisknop op protocollen voor <serverexemplaren>en selecteer vervolgens Eigenschappen.
  2. Selecteer op het tabblad Vlaggen in het vak ForceEncryptionJaen selecteer OK om het dialoogvenster te sluiten.
  3. Start de SQL Server-service opnieuw op.

Notitie

Voor sommige certificaatscenario's moet u mogelijk extra stappen implementeren op de clientcomputer en in uw clienttoepassing om versleutelde verbindingen tussen de client en de server te garanderen. Zie Speciale gevallen voor het versleutelen van verbindingen met SQL Servervoor meer informatie.

Meer informatie

Aanmeldingspakketversleuteling versus gegevenspakketversleuteling

Op hoog niveau zijn er twee soorten pakketten in het netwerkverkeer tussen een SQL Server-clienttoepassing en SQL Server: referentiepakketten (aanmeldingspakketten) en gegevenspakketten. Wanneer u versleuteling configureert (server- of clientzijde), worden beide pakkettypen altijd versleuteld. Maar zelfs wanneer u geen versleuteling configureert, worden de referenties (in het aanmeldingspakket) die worden verzonden wanneer een clienttoepassing verbinding maakt met SQL Server altijd versleuteld. SQL Server maakt gebruik van een certificaat dat voldoet aan de certificaatvereisten van een vertrouwde certificeringsinstantie, indien beschikbaar. Dit certificaat wordt handmatig geconfigureerd door de systeembeheerder, met behulp van een van de procedures die eerder in het artikel zijn besproken, of aanwezig in het certificaatarchief op de SQL Server-computer.

Door SQL Server gegenereerde zelfondertekende certificaten

SQL Server gebruikt een certificaat van een vertrouwde certificeringsinstantie, indien beschikbaar voor het versleutelen van aanmeldingspakketten. Als er geen vertrouwd certificaat is geïnstalleerd, genereert SQL Server tijdens het opstarten een zelfondertekend certificaat (terugvalcertificaat) en gebruikt u dat zelfondertekende certificaat om de referenties te versleutelen. Dit zelfondertekende certificaat helpt de beveiliging te verbeteren, maar het beschermt niet tegen identiteitsvervalsing door de server. Als het zelfondertekende certificaat wordt gebruikt en de waarde van de optie ForceEncryption is ingesteld op Ja, worden alle gegevens die via een netwerk tussen SQL Server en de clienttoepassing worden verzonden, versleuteld met behulp van het zelfondertekende certificaat.

Wanneer u een zelfondertekend certificaat gebruikt, registreert SQL Server het volgende bericht in het foutenlogboek:

Er is een zelf gegenereerd certificaat geladen voor versleuteling.

SQL Server 2016 (13.x) en eerdere versies maken gebruik van het SHA1-algoritme. Het SHA1-algoritme en veel oudere algoritmen worden echter afgeschaft vanaf SQL Server 2016 (13.x). Zie afgeschafte database-enginefuncties in SQL Server 2016 (13.x)voor meer informatie.

Als u in deze omgevingen het automatisch gegenereerde zelfondertekende certificaat gebruikt dat is gegenereerd door SQL Server, alleen voor de prelogin handshake of voor het versleutelen van alle serverclientcommunicatie, kunnen uw beveiligingssoftware of beveiligingssoftware of bedrijfsbeleid dit gebruik markeren als een beveiligingsprobleem. U hebt de volgende opties voor deze scenario's:

  • Maak een nieuw zelfondertekend certificaat of een certificaat van derden dat gebruikmaakt van sterkere versleutelingsalgoritmen en configureer SQL Server om dit nieuwe certificaat te gebruiken.
  • Omdat u nu de reden voor de vlag begrijpt, kunt u het bericht negeren (niet aanbevolen).
  • Voer een upgrade uit naar SQL Server 2017 (14.x) of een latere versie die gebruikmaakt van een sterker hash-algoritme (SHA256) voor zelfondertekende certificaten.

PowerShell-script voor het maken van zelfondertekend certificaat voor SQL Server

Het volgende codefragment kan worden gebruikt om een zelfondertekend certificaat te maken op een computer met SQL Server. Het certificaat voldoet aan de vereisten voor versleuteling voor een zelfstandig SQL Server-exemplaar en wordt opgeslagen in het certificaatarchief van de lokale computer (PowerShell moet worden gestart als beheerder):

# Define parameters
$certificateParams = @{
    Type = "SSLServerAuthentication"
    Subject = "CN=$env:COMPUTERNAME"
    DnsName = @("$($env:COMPUTERNAME)", $([System.Net.Dns]::GetHostEntry('').HostName), 'localhost')
    KeyAlgorithm = "RSA"
    KeyLength = 2048
    HashAlgorithm = "SHA256"
    TextExtension = "2.5.29.37={text}1.3.6.1.5.5.7.3.1"
    NotAfter = (Get-Date).AddMonths(36)
    KeySpec = "KeyExchange"
    Provider = "Microsoft RSA SChannel Cryptographic Provider"
    CertStoreLocation = "cert:\LocalMachine\My"
}

# Call the cmdlet
New-SelfSignedCertificate @certificateParams

Netwerkversleuteling verifiëren

Voer de volgende Transact-SQL query uit om te controleren of netwerkversleuteling is geconfigureerd en ingeschakeld:

USE [master];
GO

SELECT DISTINCT (encrypt_option)
FROM sys.dm_exec_connections
WHERE net_transport <> 'Shared memory';
GO

De encrypt_option kolom is een Booleaanse waarde die aangeeft of versleuteling is ingeschakeld voor deze verbinding. Als de waarde TRUEis, wordt de verbinding veilig versleuteld. Als de waarde FALSEis, wordt de verbinding niet versleuteld.

Gedrag van SQL Server-certificaten met machtigingen

De SQL Server-service detecteert en gebruikt het certificaat automatisch voor versleuteling als aan alle volgende voorwaarden wordt voldaan:

  • Het certificaat heeft een onderwerp dat de FQDN-naam van de machine bevat
  • Het certificaat wordt geïnstalleerd in het certificaatarchief van de lokale computer
  • Het SQL Server-serviceaccount krijgt toegang tot de persoonlijke sleutel van het certificaat

Dit gebruik gebeurt zelfs als het certificaat niet is geselecteerd in SQL Server Configuration Manager.

Ga als volgt te werk om dit gedrag te negeren:

  • Een ander certificaat configureren dat moet worden gebruikt in SQL Server Configuration Manager

    of

  • Verwijder de machtigingen voor het SQL Server-serviceaccount voor het ongewenste certificaat