Požadavky na certifikáty pro SQL Server

Tento článek popisuje požadavky na certifikáty pro SQL Server a postup kontroly, jestli certifikát splňuje tyto požadavky.

Požadavky na certifikáty pro šifrování SQL Server

Pro použití protokolu TLS (Transport Layer Security) pro šifrování SQL Server musíte zřídit certifikát (jeden ze tří digitálních typů), který splňuje následující podmínky:

  • Certifikát musí být v úložišti certifikátů místního počítače nebo v úložišti certifikátů účtu služby SQL Server. Úložiště certifikátů místního počítače použijte, abyste se vyhnuli překonfigurování certifikátů při změně SQL Server spouštěcího účtu.

  • Účet služby SQL Server musí mít potřebná oprávnění pro přístup k certifikátu TLS. Další informace najdete v tématu Šifrování připojení k SQL Serveru použitím certifikátu.

  • Aktuální systémový čas musí být za hodnotou vlastnosti Platný od a před hodnotou vlastnosti Platný do certifikátu. Další informace najdete v tématu Certifikáty s vypršenou platností.

    Poznámka:

    Certifikát musí být určený pro ověřování serveru. K zadání ověřování serveru (1.3.6.1.5.5.5.7.3.1) to vyžaduje vlastnost Rozšířené použití klíče certifikátu.

  • Certifikát musí být vytvořen pomocí KeySpec možnosti AT_KEYEXCHANGE. To vyžaduje certifikát, který k uložení privátního klíče používá staršího zprostředkovatele kryptografického úložiště . Vlastnost použití klíče certifikátu (KEY_USAGE) obvykle zahrnuje také šifrování klíče (CERT_KEY_ENCIPHERMENT_KEY_USAGE) a digitální podpis (CERT_DIGITAL_SIGNATURE_KEY_USAGE).

  • Alternativní název Subject by měl obsahovat všechny názvy, které mohou vaši klienti použít pro připojení k instanci SQL Server.

Klient musí být schopen ověřit vlastnictví certifikátu používaného serverem. Pokud má klient certifikát veřejného klíče certifikační autority, která certifikát serveru podepsala, není nutná žádná další konfigurace. Microsoft Windows zahrnuje certifikáty veřejného klíče mnoha certifikačních autorit. Pokud certifikát serveru podepsala veřejná nebo privátní certifikační autorita, pro kterou klient certifikát veřejného klíče nemá, musíte nainstalovat certifikát veřejného klíče certifikační autority, která certifikát serveru podepsala, na každém klientovi, který se připojí k SQL Server.

Důležité

SQL Server se nespustí, pokud v úložišti počítačů existuje certifikát, ale splňuje jenom některé požadavky v seznamu výše a pokud je ručně nakonfigurovaný pro použití pomocí SQL Server Configuration Manager nebo prostřednictvím položek registru. Vyberte jiný certifikát, který splňuje všechny požadavky, nebo odeberte certifikát z použití SQL Serverem, dokud nebudete moci zřídit takový, který splňuje požadavky, nebo použijte samovygenerovaný certifikát, jak je popsáno v SQL Server generovaných certifikátů podepsaných samotným SQL Serverem.

Skupina dostupnosti AlwaysOn

Pokud je vaše instance SQL Server součástí skupiny dostupnosti Always On availability Group, můžete k vytvoření certifikátu použít jednu z následujících metod:

  • Metoda 1: Pro všechny repliky skupiny dostupnosti použijte jeden certifikát. Běžný název je svévolný, takže může být jakákoli zástupná hodnota. Název hostitele a plně kvalifikovaný název domény všech replik SQL Server ve skupině dostupnosti, stejně jako názvy posluchačů skupiny dostupnosti, by měly být zahrnuty do Alternativního názvu předmětu certifikátu. Pokud se do skupiny dostupnosti po vygenerování původního certifikátu přidají další repliky, musí se certifikát znovu vygenerovat s názvy všech replik a znovu naimportovat do každé repliky. Certifikát musí být také importován do databáze certifikátů na všech klientech připojujících se k replice skupiny dostupnosti nebo naslouchací službě skupiny dostupnosti, pokud certifikát není podepsaný veřejnou nebo oficiální certifikační autoritou (CA). Pokud do certifikátu nezahrnete repliky skupiny dostupnosti a názvy listenerů, musíte při připojování ke skupině dostupnosti do hodnot connection string zahrnout jednu z hodnot Subject Alternative Name v HostNameInCertificate nebo cestu k certifikátu v ServerCertificate. Doporučeným přístupem je zadání názvů v certifikátu.

    Následuje příklad vlastností, které definují správně nakonfigurovaný certifikát pro skupinu dostupnosti se dvěma servery pojmenovanými test1.<your company>.com a test2.<your company>.com, a s naslouchacím procesem skupiny dostupnosti s názvem aglistener.<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 = test2
    
  • Metoda 2: Pro každou repliku skupiny dostupnosti použijte samostatný certifikát. Přidání replik do skupiny dostupnosti po vygenerování certifikátu je jednodušší při použití samostatných certifikátů, protože stačí vygenerovat certifikát pouze pro novou repliku, a ne upravovat všechny certifikáty na všech existujících replikách. Běžný název je libovolný, takže může být libovolná hodnota zástupného symbolu. Název hostitele a plně kvalifikovaný název domény příslušné instance SQL Server a názvy naslouchacího procesu skupiny dostupnosti musí být zahrnuté v alternativním názvu subjektu certifikátu pro každou příslušnou repliku. Naimportujte každý certifikát do příslušné repliky, a pokud certifikát není podepsaný veřejnou nebo oficiální certifikační autoritou (CA), importujtevšechny certifikáty do všech úložišť certifikátů na všech klientech, kteří se připojují k replikám, nebo naslouchacímu procesu skupiny dostupnosti.

    Následují příklady vlastností, které definují správně nakonfigurované certifikáty pro skupinu dostupnosti se dvěma pojmenovanými test1.<your company>.com instancemi a test2.<your company>.coma naslouchacím procesem skupiny dostupnosti s názvem aglistener.<your company>.com:

    Certifikát při testu1:

    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= test1
    

    Certifikát při testu2:

    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 
    

Instance clusteru pro převzetí služeb při selhání

Pokud je SQL Server nakonfigurovaný jako instance clusteru failover, musíte nainstalovat certifikát serveru s názvem hostitele nebo plně kvalifikovaným názvem DNS (FQDN) virtuálního serveru na všech uzlech v clusteru s podporou převzetí služeb při selhání. a certifikáty musí být zřízeny na všech uzlech clusteru pro převzetí služeb při selhání. Pokud máte například cluster se dvěma uzly s pojmenovanými test1.<your company>.com uzly a test2.<your company>.comvirtuálním serverem s názvem virtsql, musíte na oba uzly nainstalovat certifikát virtsql.<your company>.com .

Importujte certifikát do failover clusteru v posloupnosti popsané v Konfigurování SQL Server Database Engine pro šifrování připojení.

Následuje příklad vlastností, které definují správně nakonfigurovaný certifikát pro instanci clusteru s přepnutím při selhání:

CN = virtsql.<your company>.com
DNS Name = virtsql.<your company>.com
DNS Name = virtsql

Další informace o clusterech SQL najdete v tématu Před instalací clusteringu s podporou převzetí služeb při selhání.

Kontrola, jestli certifikát splňuje požadavky

V SQL Server 2019 (15.x) a novějších verzích SQL Server Configuration Manager automaticky ověřuje všechny požadavky na certifikáty během samotné fáze konfigurace. Pokud se SQL Server po nakonfigurování certifikátu úspěšně spustí, to je dobrý indikátor, že SQL Server tento certifikát může použít. Některé klientské aplikace ale můžou mít i další požadavky na certifikáty, které se dají použít k šifrování, a v závislosti na používané aplikaci může docházet k různým chybám. V tomto scénáři je potřeba zkontrolovat dokumentaci podpory klientské aplikace, kde najdete další informace o předmětu.

Ověření KeySpec a použití klíče

Požadavek KeySpec (AT_KEYEXCHANGE) je běžnou příčinou selhání konfigurace certifikátu. Pomocí následujících metod ověřte, že váš certifikát splňuje tento požadavek.

Použití nástroje certutil

Spusťte certutil příkaz -v s možností zobrazit podrobné vlastnosti certifikátu, včetně KeySpec a Key Usage:

certutil -v -store My "<certificate_thumbprint>"

Ve výstupu vyhledejte následující hodnoty:

KeySpec = 1 -- AT_KEYEXCHANGE
Key Usage = Key Encipherment, Digital Signature (a0)
Enhanced Key Usage:
    Server Authentication (1.3.6.1.5.5.7.3.1)

Pokud KeySpec = 2 (AT_SIGNATURE), certifikát se nedá použít pro šifrování SQL Server.

Použijte PowerShell

Spuštěním následujících příkazů PowerShellu zkontrolujte KeySpec certifikáty v úložišti místního počítače:

Get-ChildItem Cert:\LocalMachine\My | ForEach-Object {
    $cert = $_
    $key = $cert.PrivateKey
    [PSCustomObject]@{
        Subject   = $cert.Subject
        Thumbprint = $cert.Thumbprint
        KeySpec   = if ($key) { $key.CspKeyContainerInfo.KeyNumber } else { 'No private key' }
        NotAfter  = $cert.NotAfter
    }
} | Format-Table -AutoSize

Ověřte, že se KeySpec zobrazuje Exchange (odpovídající AT_KEYEXCHANGE). Pokud se zobrazí Signature, požádejte o nový certifikát se správným KeySpec nastavením.

Vytvoření certifikátu pomocí SLUŽBY AD CS

Pokud vaše organizace používá Active Directory Certificate Services (AD CS) jako interní certifikační autoritu (CA), vytvořte certifikát, který splňuje požadavky SQL Server pomocí následujícího postupu:

  1. Otevřete konzolový modul snap-in Certifikáty MMC pro místní počítač (certlm.msc).
  2. Rozbalte položku Osobní, klikněte pravým tlačítkem na Certifikáty a vyberte Všechny úkoly>Požadovat nový certifikát.
  3. Vyberte Active Directory Zásady registrace a vyberte Dalši.
  4. Zvolte šablonu certifikátu, která podporuje ověřování serveru. Webový server nebo vlastní šablona nakonfigurovaná pro ověřování serveru obvykle splňuje požadavky. Ověřte u správce certifikační autority, že šablona používá starší zprostředkovatel kryptografických služeb (CSP) s KeySpec = AT_KEYEXCHANGE, nikoliv poskytovatel úložiště klíčů (KSP).
  5. Na stránce Vlastnosti certifikátu :
    • Nastavte Společný název (CN) na název hostitele nebo plně kvalifikovaný název domény vaší instance SQL Server.
    • Na kartě Alternativní název subjektu přidejte položky DNS pro všechny názvy hostitelů, které klienti používají pro připojení (název hostitele, plně kvalifikovaný název domény a všechny aliasy).
  6. Dokončete průvodce registrací a ověřte, že se nový certifikát zobrazí v osobních>certifikátech.
  7. Ověřte KeySpec pomocí nástroje buď certutil, nebo PowerShell, jak je popsáno v oddílu Verify KeySpec and Key Usage.

Důležité

Certifikáty vytvořené pomocí zprostředkovatele úložiště klíčů (KSP), jako je Zprostředkovatel úložiště softwarových klíčů Microsoft, používají KeySpec = 0 a nejsou kompatibilní s SQL Server. Při vytváření šablony certifikátu ve službě AD CS vyberte staršího poskytovatele CSP, jako je Microsoft RSA SChannel Cryptographic Provider, abyste zajistiliKeySpec = AT_KEYEXCHANGE.

K ověření platnosti certifikátu pro použití s SQL Server můžete použít jednu z následujících metod:

  • nástroj sqlcheck: sqlcheck je nástroj příkazového řádku, který zkoumá aktuální nastavení počítače a služebních účtů a vytváří textovou zprávu do okna konzole, která je užitečná pro řešení různých chyb připojení. Výstup obsahuje následující informace týkající se certifikátů:

    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.
    

    Další informace o možnostech nástroje a pokyny ke stažení najdete v tématu Vítá vás wikiweb CSS_SQL_Networking_Tools.

  • Nástroj certutil: certutil.exe je program příkazového řádku nainstalovaný jako součást Certificate Services. K výpisu a zobrazení informací o certifikátu můžete použít certutil.exe. -v Pomocí možnosti získáte podrobné informace. Další informace najdete v tématu certutil.

  • Modul snap-in Certifikáty: K zobrazení dalších informací o certifikátech v různých úložištích certifikátů v počítači můžete také použít okno modul snap-in Certifikáty . Tento nástroj ale nezobrazuje KeySpec informace. Další informace o zobrazení certifikátů pomocí modulu snap-in konzoly MMC naleznete v tématu Postupy: Zobrazení certifikátů pomocí modulu snap-in konzoly MMC.

Importujte certifikát s jiným názvem než název hostitele

V současné době můžete importovat pouze certifikát pomocí SQL Server Configuration Manager, pokud název subjektu certifikátu odpovídá názvu hostitele počítače.

Pokud chcete použít certifikát s jiným názvem subjektu, postupujte takto:

  1. Importujte certifikát do úložiště certifikátů místního počítače pomocí modulu snap-in Certifikáty.

  2. V SQL Server Configuration Manager rozbalte položku SQL Server Network Configuration, klikněte pravým tlačítkem na instanci SQL Serveru a potom vyberte Vlastnosti, čímž otevřete dialogové okno Protocols for <instance_name> Properties.

  3. Na kartě Certifikát vyberte certifikát, který jste importovali do úložiště certifikátů, z rozevíracího seznamu Certifikát :

    Snímek obrazovky karty certifikátu v dialogovém okně vlastností v SQL Server Configuration Manager.

Import certifikátu s jiným názvem názvu hostitele způsobí následující chybovou zprávu:

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

Certifikáty s vypršenou platností

SQL Server kontroluje platnost certifikátů pouze v době konfigurace. Nemůžete například použít SQL Server Configuration Manager v SQL Server 2019 (15.x) a novějších verzích ke zřízení certifikátu, jehož platnost vypršela. SQL Server nadále běží bez problémů, pokud platnost certifikátu vyprší po jeho zřízení. Některé klientské aplikace, například Power BI, kontrolují platnost certifikátu u každého připojení a vyvolají chybu, pokud je instance SQL Server nakonfigurována tak, aby pro šifrování používala certifikát, jehož platnost vypršela. Pro SQL Server šifrování doporučujeme nepoužívat certifikát, jehož platnost vypršela.

Další krok