Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden certificaatvereisten voor SQL Server beschreven en wordt gecontroleerd of een certificaat aan deze vereisten voldoet.
Certificaatvereisten voor SQL Server-versleuteling
Voor het gebruik van Tls (Transport Layer Security) voor SQL Server-versleuteling moet u een certificaat inrichten (een van de drie digitale typen) die aan de volgende voorwaarden voldoet:
Het certificaat moet zich in het certificaatarchief van de lokale computer of het certificaatarchief van het SQL Server-serviceaccount bevinden. Het is raadzaam om het certificaatarchief van de lokale computer te bewaren, omdat het niet nodig is om certificaten opnieuw te configureren met wijzigingen in het SQL Server-opstartaccount.
Het SQL Server-serviceaccount moet over de benodigde machtigingen beschikken om toegang te krijgen tot het TLS-certificaat. Zie Verbindingen met SQL Server versleutelen door een certificaat te importeren voor meer informatie.
De huidige systeemtijd moet na de waarde van de eigenschap Geldig vanaf en vóór de waarde van de eigenschap Geldig tot van het certificaat liggen. Zie Verlopen certificaten voor meer informatie.
Opmerking
Het certificaat moet zijn bedoeld voor serververificatie. Hiervoor is de eigenschap Uitgebreid sleutelgebruik van het certificaat vereist om Serververificatie (1.3.6.1.5.5.7.3.1) op te geven.
Het certificaat moet worden gemaakt met behulp van de
KeySpecoptie .AT_KEYEXCHANGEHiervoor is een certificaat vereist dat gebruikmaakt van een verouderde cryptografische opslagprovider om de persoonlijke sleutel op te slaan. Meestal bevat de sleutelgebruikseigenschap van het certificaat (KEY_USAGE) ook sleutelcodering (CERT_KEY_ENCIPHERMENT_KEY_USAGE) en een digitale handtekening (CERT_DIGITAL_SIGNATURE_KEY_USAGE).De alternatieve onderwerpnaam moet alle namen bevatten die uw clients kunnen gebruiken om verbinding te maken met een SQL Server-exemplaar.
De client moet het eigendom kunnen verifiëren van het certificaat dat door de server wordt gebruikt. Als de client het openbare-sleutelcertificaat heeft van de certificeringsinstantie die het servercertificaat heeft ondertekend, is er geen verdere configuratie nodig. Microsoft Windows bevat de openbare-sleutelcertificaten van veel certificeringsinstanties. Als het servercertificaat is ondertekend door een openbare of persoonlijke certificeringsinstantie waarvoor de client geen openbaar sleutelcertificaat heeft, moet u het openbare-sleutelcertificaat installeren van de certificeringsinstantie die het servercertificaat heeft ondertekend op elke client die verbinding gaat maken met SQL Server.
Belangrijk
SQL Server start niet als er een certificaat bestaat in het computerarchief, maar voldoet alleen aan bepaalde vereisten in de bovenstaande lijst en als het handmatig is geconfigureerd voor gebruik door SQL Server Configuration Manager of via registervermeldingen. Selecteer een ander certificaat dat voldoet aan alle vereisten of verwijder het certificaat dat door SQL Server wordt gebruikt, totdat u een certificaat kunt inrichten dat voldoet aan vereisten of een zelf gegenereerd certificaat kunt gebruiken, zoals beschreven in door SQL Server gegenereerde zelfondertekende certificaten.
AlwaysOn-beschikbaarheidsgroep
Als uw SQL Server-exemplaar deel uitmaakt van een AlwaysOn-beschikbaarheidsgroep, kunt u een van de volgende methoden gebruiken om uw certificaat te maken:
Methode 1: Gebruik één certificaat op alle replica's van de beschikbaarheidsgroep. De algemene naam is willekeurig, dus kan elke tijdelijke aanduidingswaarde zijn. De hostnaam en de FQDN van alle SQL Server-replica's in de beschikbaarheidsgroep en de namen van de listener van de beschikbaarheidsgroep moeten worden opgenomen in de alternatieve onderwerpnaam van het certificaat. Als er extra replica's worden toegevoegd aan de beschikbaarheidsgroep nadat het oorspronkelijke certificaat is gegenereerd, moet het certificaat opnieuw worden gegenereerd met de namen van alle replica's en opnieuw worden geimporteerd naar elke replica. Het certificaat moet ook worden geïmporteerd in het certificaatarchief op alle clients die verbinding maken met de replica van de beschikbaarheidsgroep of de listener van de beschikbaarheidsgroep, tenzij het certificaat is ondertekend door een openbare of officiële certificeringsinstantie (CA). Als u de replica's en listenernamen van de beschikbaarheidsgroep niet opneemt in het certificaat, moet u een van de waarden van de alternatieve onderwerpnaam in het
HostNameInCertificateof het pad naar het certificaat opnemen in deServerCertificatewaarden van de verbindingsreeks bij het maken van verbinding met de beschikbaarheidsgroep. Het opgeven van namen in het certificaat is de aanbevolen benadering.Hier volgt een voorbeeld van de eigenschappen die een correct geconfigureerd certificaat definiëren voor een beschikbaarheidsgroep met twee servers met de naam
test1.<your company>.comentest2.<your company>.comeen listener voor beschikbaarheidsgroepen met de naamaglistener.<your company>.com:CN = <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager> DNS Name = aglistener.<your company>.com DNS Name = test1.<your company>.com DNS Name = test2.<your company>.com DNS Name = aglistener DNS Name = test1 DNS Name = test2Methode 2: Gebruik een afzonderlijk certificaat voor elke replica van de beschikbaarheidsgroep. Het toevoegen van replica's aan een beschikbaarheidsgroep nadat een certificaat is gegenereerd, is eenvoudiger wanneer u afzonderlijke certificaten gebruikt, omdat u alleen een certificaat voor de nieuwe replica hoeft te genereren in plaats van alle certificaten op alle bestaande replica's te wijzigen. De algemene naam is willekeurig, dus kan elke tijdelijke aanduidingswaarde zijn. De hostnaam en FQDN van het respectieve SQL Server-exemplaar en de namen van de listener van de beschikbaarheidsgroep moeten worden opgenomen in de alternatieve onderwerpnaam van het certificaat voor elke respectieve replica. Importeer elk certificaat in de respectieve replica en, tenzij het certificaat is ondertekend door een openbare of officiële certificeringsinstantie (CA), importeert uvervolgens alle certificaten in alle certificaatarchieven op alle clients die verbinding maken met de replica's of de listener voor beschikbaarheidsgroepen.
Hieronder ziet u voorbeelden van de eigenschappen die correct geconfigureerde certificaten definiëren voor een beschikbaarheidsgroep met twee exemplaren met de naam
test1.<your company>.comentest2.<your company>.com, en een listener voor beschikbaarheidsgroepen met de naamaglistener.<your company>.com:Certificaat op test1:
CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager> DNS Name= test1.<your company>.com DNS Name= aglistener.<your company>.com DNS Name= aglistener DNS Name= test1Certificaat op test2:
CN= <hostname is recommended but not required when certificates are configured using SQL Server Configuration Manager> DNS Name= test2.<your company>.com DNS Name= aglistener.<your company>.com DNS Name= aglistener DNS Name= test2
Exemplaar van failovercluster
Als SQL Server is geconfigureerd als een failoverclusterexemplaren, moet u het servercertificaat installeren met de hostnaam of FQDN (Fully Qualified DNS Name) van de virtuele server op alle knooppunten in het failovercluster. en de certificaten moeten worden ingericht op alle knooppunten van het failovercluster. Als u bijvoorbeeld een cluster met twee knooppunten hebt, met knooppunten met de naam test1.<your company>.com en test2.<your company>.comen u een virtuele server met de naam virtsql hebt, moet u een certificaat voor virtsql.<your company>.com beide knooppunten installeren.
Importeer het certificaat in het failovercluster in de volgorde die wordt beschreven in SQL Server Database Engine configureren voor het versleutelen van verbindingen.
Hier volgt een voorbeeld van de eigenschappen die een correct geconfigureerd certificaat definiëren voor een exemplaar van een failovercluster:
CN = virtsql.<your company>.com
DNS Name = virtsql.<your company>.com
DNS Name = virtsql
Zie voor meer informatie over SQL-clusters voordat u failoverclustering installeert.
Controleren of een certificaat voldoet aan de vereisten
In SQL Server 2019 (15.x) en latere versies valideert SQL Server Configuration Manager automatisch alle certificaatvereisten tijdens de configuratiefase zelf. Als SQL Server is gestart nadat u een certificaat hebt geconfigureerd, is het een goede indicatie dat SQL Server dat certificaat kan gebruiken. Maar sommige clienttoepassingen hebben mogelijk nog andere vereisten voor certificaten die kunnen worden gebruikt voor versleuteling en er kunnen verschillende fouten optreden, afhankelijk van de toepassing die wordt gebruikt. In dat scenario moet u de ondersteuningsdocumentatie van de clienttoepassing controleren voor meer informatie over het onderwerp.
U kunt een van de volgende methoden gebruiken om de geldigheid van het certificaat te controleren voor gebruik met SQL Server:
sqlcheck tool:
sqlcheckis een opdrachtregelprogramma dat de huidige instellingen van het computer- en serviceaccount onderzoekt en een tekstrapport naar het consolevenster produceert dat handig is voor het oplossen van verschillende verbindingsfouten. De uitvoer bevat de volgende informatie met betrekking tot certificaten:Details for SQL Server Instance: This Certificate row in this section provides more details regarding the certificate being used by SQL Server (Self-generated, hard-coded thumbprint value, etc.). Certificates in the Local Computer MY Store: This section shows detailed information regarding all the certificates found in the computer certificate store.Zie Welkom bij de CSS_SQL_Networking_Tools wiki voor meer informatie over de mogelijkheden van het hulpprogramma en voor downloadinstructies.
hulpprogramma certutil:
certutil.exeis een opdrachtregelprogramma dat is geïnstalleerd als onderdeel van Certificate Services. U kunt certutil.exe gebruiken om certificaatgegevens te dumpen en weer te geven. Gebruik de-voptie om gedetailleerde informatie op te halen. Zie certutil voor meer informatie.Module Certificaten: u kunt de module Certificaten ook gebruiken om meer informatie over certificaten in verschillende certificaatarchieven op de computer weer te geven. Maar met dit hulpprogramma worden geen gegevens weergegeven
KeySpec. Zie Hoe certificaten bekijken met de MMC-module voor meer informatie over het weergeven van certificaten met de MMC-module.
Een certificaat met een andere naam importeren in de hostnaam
Op dit moment kunt u alleen een certificaat importeren met behulp van SQL Server Configuration Manager als de onderwerpnaam van het certificaat overeenkomt met de hostnaam van de computer.
Als u een certificaat met een andere onderwerpnaam wilt gebruiken, voert u de volgende stappen uit:
Importeer het certificaat in het certificaatarchief van de lokale computer met behulp van de module Certificaten.
Vouw in SQL Server Configuration Manager met de rechtermuisknop op het exemplaar van SQL Server Network Configuration uit en kies Eigenschappen om het dialoogvenster Protocollen voor <instance_name> eigenschappen te openen.
Selecteer op het tabblad Certificaat het certificaat dat u in het certificaatarchief hebt geïmporteerd in de vervolgkeuzelijst Certificaat :
Als u een certificaat met een andere naam naar de hostnaam importeert, wordt het volgende foutbericht weergegeven:
The selected certificate name does not match FQDN of this hostname. This property is required by SQL Server
Certificate name: random-name
Computer name: sqlserver.domain.com
Verlopen certificaten
SQL Server controleert alleen de geldigheid van de certificaten op het moment van configuratie. U kunt bijvoorbeeld SQL Server Configuration Manager niet gebruiken in SQL Server 2019 (15.x) en latere versies om een verlopen certificaat in te richten. SQL Server blijft zonder problemen draaien als het certificaat verloopt nadat het al is geprovisioneerd. Sommige clienttoepassingen, zoals Power BI, controleren echter de geldigheid van het certificaat op elke verbinding en veroorzaken een fout als het SQL Server-exemplaar is geconfigureerd voor het gebruik van een verlopen certificaat voor versleuteling. U wordt aangeraden geen verlopen certificaat te gebruiken voor SQL Server-versleuteling.
Volgende stap
- Configureer de SQL Server Database Engine om verbindingen te versleutelen door een certificaat te importeren.