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.
Tento článek vysvětluje informace o podporovaných nastaveních registru pro implementaci protokolů TLS (Transport Layer Security) a SSL (Secure Sockets Layer) prostřednictvím poskytovatele zabezpečení Schannel (SSP). Podklíče a položky registru popsané v tomto článku vám pomůžou spravovat a řešit potíže se zprostředkovatelem zabezpečení Schannel, konkrétně protokoly TLS a SSL.
Upozornění
Tyto informace se poskytují jako referenční informace, které se mají použít při řešení potíží nebo ověření, že se použijí požadovaná nastavení. Doporučujeme, abyste registr přímo neupravoval, pokud neexistuje žádná jiná alternativa. Úpravy registru nejsou před použitím ověřeny editorem registru nebo operačním systémem Windows. V důsledku toho mohou být uloženy nesprávné hodnoty a to může vést k neopravitelným chybám v systému. Pokud je to možné, místo přímé úpravy registru použijte zásady skupiny nebo jiné nástroje systému Windows, jako je konzola MMC (Microsoft Management Console). Pokud musíte registr upravit, buďte velmi opatrní.
Protokolování Schannel
Pro události Schannel jsou uložené v protokolu událostí systému osm úrovní protokolování a lze je zobrazit pomocí Prohlížeče událostí. Tato cesta registru je uložena pod HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
klíčem EventLogging s hodnotou DWORD nastavenou na hodnotu 1.
Desetinný nebo šestnáctkový | Události protokolování Schannel |
---|---|
0 | Žádné události |
1 | Chybové události |
2 | Varovné události |
3 | Události chyb a upozornění |
4 | Informační a úspěšné události |
5 | Události chyb, informační a úspěšné události |
6 | Události upozornění, informačních a úspěšných událostí |
7 | Chyby, upozornění, informační události a události úspěchu |
Poznámka:
Po změně úrovně protokolování musíte zařízení restartovat.
MetodyMapováníCertifikátů
Pokud serverová aplikace vyžaduje ověření klienta, nástroj Schannel se automaticky pokusí namapovat certifikát, který klientský počítač poskytuje, na uživatelský účet. Uživatele, kteří se přihlašují pomocí klientského certifikátu, můžete ověřit vytvořením mapování, které souvisí s informacemi o certifikátu s uživatelským účtem Systému Windows.
Jakmile vytvoříte a povolíte mapování certifikátů, pokaždé, když klient zobrazí klientský certifikát, serverová aplikace tento uživatel automaticky přidruží k příslušnému uživatelskému účtu systému Windows.
Ve většině případů se certifikát mapuje na uživatelský účet jedním ze dvou způsobů:
- Jeden certifikát se mapuje na jeden uživatelský účet (mapování 1:1).
- Na jeden uživatelský účet se mapuje více certifikátů (mapování M:1).
Zprostředkovatel Schannel používá čtyři metody mapování certifikátů:
- Mapování služby Kerberos pro uživatele (S4U) (ve výchozím nastavení je povolené)
- Mapování hlavního názvu uživatele
- Mapování 1:1, také známé jako mapování subjektu/vydavatele
- Mapování M:1
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Název položky | DWORD | Ve výchozím nastavení povoleno |
---|---|---|
Předmět/vystavitel | 0x000000001 | Ne |
Vydavatel | 0x000000002 | Ne |
Uživatelské hlavní jméno (UPN) | 0x000000004 | Ne |
S4U2Self řekl: | 0x000000008 | Ano |
S4U2Self explicitní | 0x000000010 | Ano |
Šifry
Šifrování TLS/SSL by se mělo řídit konfigurací pořadí šifrovací sady. Podrobnosti najdete v tématu Konfigurace pořadí šifrovací sady TLS.
Informace o výchozích objednávkách šifrovacích sad používaných zprostředkovatelem zabezpečení Schannel najdete v tématu Šifrovací sady v zprostředkovateli zabezpečení TLS/SSL (Schannel SSP).
ŠiferSuites
Konfigurace šifrovacích sad TLS/SSL by se měla provádět pomocí zásad skupiny, MDM nebo PowerShellu. Podrobnosti najdete v tématu Konfigurace pořadí šifrovacích sad PROTOKOLU TLS .
Informace o výchozích objednávkách šifrovacích sad používaných zprostředkovatelem zabezpečení Schannel najdete v tématu Šifrovací sady v zprostředkovateli zabezpečení TLS/SSL (Schannel SSP).
Čas klientské mezipaměti
Tato položka určuje životnost položky mezipaměti relace TLS klienta v milisekundách. Počínaje systémem Windows Server 2008 a Windows Vista je výchozí hodnota 10 hodin. Hodnota 0 vypne ukládání relace TLS do mezipaměti na klientovi.
Když se klient poprvé připojí k serveru přes ZSP Schannel, provede se úplné handshake TLS/SSL. Po dokončení se hlavní tajný klíč, šifrovací sada a certifikáty ukládají do mezipaměti relace na příslušném klientovi a serveru.
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
EnableOcspStaplingForSni
Připojení protokolu OCSP (Online Certificate Status Protocol) umožňuje webovému serveru, jako je internetová informační služba (IIS), poskytnout aktuální stav odvolání certifikátu serveru při odesílání certifikátu serveru klientovi během metody handshake protokolu TLS. Tato funkce snižuje zatížení serverů OCSP, protože webový server může uložit aktuální stav OCSP certifikátu serveru do mezipaměti a odeslat ho více webovým klientům. Bez této funkce by se každý webový klient pokusil načíst aktuální stav OCSP certifikátu serveru ze serveru OCSP. Tím by se na tomto serveru OCSP vygenerovalo vysoké zatížení.
Kromě služby IIS můžou webové služby přes http.sys také těžit z tohoto nastavení, včetně služby Active Directory Federation Services (AD FS) a proxy webových aplikací (WAP).
Podpora OCSP je ve výchozím nastavení povolená pro weby služby IIS, které mají jednoduchou zabezpečenou vazbu (SSL/TLS). Tato podpora ale není ve výchozím nastavení povolená, pokud web služby IIS používá buď nebo oba následující typy vazeb SSL/TLS:
- Vyžadovat indikaci názvu serveru
- Použití centralizovaného úložiště certifikátů
V tomto případě odpověď serveru hello během TLS handshaku ve výchozím nastavení neobsahuje stav staplovaného OCSP. Toto chování zlepšuje výkon: Implementace OCSP staplingu ve Windows se škáluje na stovky serverových certifikátů. Indikace názvu serveru (SNI) a centrální úložiště certifikátů (CCS) však umožňují službě IIS škálovat na tisíce webů, které mohou mít tisíce certifikátů serveru, takže povolení připojení OCSP pro vazby CCS může způsobit problémy s výkonem.
Cesta k registru: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Přidejte následující klíč:
"EnableOcspStaplingForSni"=dword:00000001
Pokud chcete hodnotu DWORD zakázat, nastavte hodnotu 0:
"EnableOcspStaplingForSni"=dword:00000000
Poznámka:
Povolení tohoto klíče registru má potenciální dopad na výkon.
Hashe
Algoritmy hash TLS/SSL by měly být řízeny konfigurací pořadí šifrovací sady. Podrobnosti najdete v tématu Konfigurace pořadí šifrovacích sad TLS .
VelikostMezipamětiVydavatele
Tato položka řídí velikost mezipaměti vystavitele a používá se s mapováním vystavitele. Zprostředkovatel sdílených služeb Schannel se pokusí namapovat všechny vystavitele v řetězu certifikátů klienta, nejen přímého vystavitele klientského certifikátu. Pokud se vystavitelé nemapují na účet, což je typický případ, může se server pokusit namapovat stejný název vystavitele opakovaně, stokrát za sekundu.
Aby se tomu zabránilo, server má negativní mezipaměť, takže pokud název vystavitele není mapován na účet, je přidán do mezipaměti a poskytovatel služeb zabezpečení Schannel se nepokusí mapovat název vystavitele znovu, dokud nevyprší platnost položky mezipaměti. Tato položka registru určuje velikost mezipaměti. Tato položka ve výchozím nastavení v registru neexistuje. Výchozí hodnota je 100.
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
IssuerCacheTime
Tato položka určuje délku intervalu časového limitu mezipaměti v milisekundách. Zprostředkovatel sdílených služeb Schannel se pokusí namapovat všechny vystavitele v řetězu certifikátů klienta, nejen přímého vystavitele klientského certifikátu. V případě, že se emitenti nepřiřadí k účtu, což je obvyklý případ, server se může pokusit opakovaně přiřadit stejný název emitenta až stovkykrát za sekundu.
Aby se tomu zabránilo, server má negativní mezipaměť, takže pokud název vystavitele není mapován na účet, je přidán do mezipaměti a poskytovatel služeb zabezpečení Schannel se nepokusí mapovat název vystavitele znovu, dokud nevyprší platnost položky mezipaměti. Tato mezipaměť se uchovává kvůli optimalizaci výkonu, takže se systém nebude nadále zkoušet mapovat stejné vystavitele. Tato položka ve výchozím nastavení v registru neexistuje. Výchozí hodnota je 10 minut.
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Velikosti klíčů algoritmu pro výměnu klíčů (KeyExchangeAlgorithm)
Tyto následující položky nemusí ve výchozím nastavení existovat v registru a musí být vytvořeny ručně. Použití algoritmů výměny klíčů by mělo být řízeno konfigurací pořadí šifrovací sady. Další informace o kryptografických algoritmech šifrovací sady TLS/SSL najdete v tématu Šifrovací sady v PROTOKOLU TLS/SSL (Schannel SSP).
Přidáno ve Windows 10 verze 1507 a Windows Serveru 2016.
Cesta k registru: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman
Pokud chcete pro klienta TLS zadat minimální podporovaný rozsah Diffie-Hellman bitů klíče, vytvořte ClientMinKeyBitLength
položku. Po vytvoření položky změňte hodnotu DWORD na požadovanou délku bitu. Pokud není nakonfigurovaný, je minimální 1024 bitů.
Poznámka:
Nakonfigurované eliptické křivky určují kryptografickou sílu výměny klíčů ECDHE. Další informace najdete v tématu Správa protokolu TLS (Transport Layer Security).
Maximální velikost mezipaměti
Tato položka řídí maximální počet relací PROTOKOLU TLS, které se mají ukládat do mezipaměti. Nastavením hodnoty MaximumCacheSize 0
zakážete mezipaměť relace na straně serveru, aby se zabránilo obnovení relace. Zvýšení hodnoty MaximumCacheSize nad výchozí hodnoty způsobí, že Lsass.exe spotřebuje paměť navíc. Každý prvek mezipaměti relace obvykle vyžaduje 2 kB až 4 kB paměti. Tato položka ve výchozím nastavení v registru neexistuje. Výchozí hodnota je 20 000 prvků.
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Zasílání zpráv – parsování fragmentů
Tato položka určuje maximální povolenou velikost zprávy handshake protokolu TLS, která je přijata. Zprávy větší, než je povolená velikost, se nepřijímají a metoda handshake protokolu TLS selže. Tyto položky ve výchozím nastavení v registru neexistují.
Když nastavíte hodnotu na 0x0
, fragmentované zprávy se nezpracují a způsobí selhání metody handshake protokolu TLS. Díky tomu jsou klienti nebo servery TLS na aktuálním počítači nekompatibilní s dokumenty RFC protokolu TLS.
Maximální povolenou velikost lze zvětšit až na 2^16 bajtů. Povolení klienta nebo serveru ke čtení a ukládání velkých objemů neověřených dat ze sítě není dobrý nápad a spotřebuje paměť pro každý kontext zabezpečení.
Přidáno v systémech Windows 7 a Windows Server 2008 R2: K dispozici je aktualizace, která umožňuje aplikaci Internet Explorer v systému Windows XP, windows Vista nebo Windows Server 2008 analyzovat fragmentované zprávy TLS/SSL handshake.
Cesta k registru: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging
Pokud chcete zadat maximální povolenou velikost fragmentovaných zpráv handshake protokolu TLS, které klient TLS přijímá, vytvořte MessageLimitClient
položku. Po vytvoření položky změňte hodnotu DWORD na požadovanou délku bitu. Pokud není nakonfigurovaná, výchozí hodnota je 0x8000
bajty.
Pokud chcete zadat maximální povolenou velikost fragmentovaných zpráv handshake protokolu TLS, které server TLS přijme, když neexistuje žádné ověření klienta, vytvořte MessageLimitServer
položku. Po vytvoření položky změňte hodnotu DWORD na požadovanou délku bitu. Pokud není nakonfigurovaná, výchozí hodnota je 0x4000 bajty.
Pokud chcete zadat maximální povolenou velikost fragmentovaných zpráv handshake protokolu TLS, které server TLS přijme při ověřování klienta, vytvořte MessageLimitServerClientAuth
položku. Po vytvoření položky změňte hodnotu DWORD na požadovanou délku bitu. Pokud není nakonfigurovaná, výchozí hodnota je 0x8000 bajty.
OdeslatSeznamDůvěryhodnýchVydavatelů
Servery TLS můžou při žádosti o ověření klienta odeslat seznam rozlišujíných názvů přijatelných certifikačních autorit. To může klientům TLS pomoct vybrat příslušný klientský certifikát TLS. Servery TLS založené na Schannel ve výchozím nastavení neodesílají tento seznam důvěryhodných vystavitelů, protože zpřístupňuje certifikační autority důvěryhodné serverem pasivním pozorovatelům a také zvyšuje množství dat vyměňovaných v průběhu metody handshake protokolu TLS. Nastavení této hodnoty na 1 způsobí, že servery založené na Schannel odesílají seznamy svých důvěryhodných vystavitelů.
Neodeslání seznamu důvěryhodných vystavitelů by mohlo ovlivnit, co klient odesílá, když je požádán o klientský certifikát. Například když Microsoft Edge obdrží žádost o ověření klienta, zobrazí se pouze klientské certifikáty, které jsou zřetězené k jedné z certifikačních autorit, které server posílá. Pokud server neodeslal seznam, Microsoft Edge zobrazí všechny klientské certifikáty nainstalované v klientovi.
Toto chování může být žádoucí. Pokud například prostředí PKI zahrnují křížové certifikáty, certifikáty klienta a serveru nemají stejnou kořenovou certifikační autoritu. Microsoft Edge proto nemůže zvolit certifikát, který je zřetěděný s jedním z certifikačních autorit serveru. Klienti TLS můžou nabízet jakýkoli dostupný klientský certifikát, pokud server neodesílá seznam důvěryhodných vystavitelů. Tato položka ve výchozím nastavení v registru neexistuje.
Výchozí chování seznamu důvěryhodných vystavitelů
Verze Windows | Výchozí chování |
---|---|
Windows Server 2012, Windows 8 a novější | NEPRAVDA |
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Čas mezipaměti serveru
Tato položka určuje životnost položky mezipaměti relace TLS serveru v milisekundách. Výchozí hodnota je 10 hodin. Hodnota 0 vypne ukládání relace TLS do mezipaměti na serveru a zabrání obnovení relace. Zvýšení hodnoty ServerCacheTime nad výchozí hodnoty způsobí, že Lsass.exe spotřebovává další paměť. Každý prvek mezipaměti relace obvykle vyžaduje 2 kB až 4 kB paměti. Tato položka ve výchozím nastavení v registru neexistuje.
Cesta k registru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Výchozí čas mezipaměti serveru: 10 hodin
Nastavení verze protokolu TLS, DTLS a SSL
SChannel SSP implementuje verze protokolů TLS, DTLS a SSL. Různé verze Windows podporují různé verze protokolu. Sadu systémově dostupných verzí TLS a SSL lze omezit (ale ne rozšířit) volajícími SSPI, které určují strukturu SCH_CREDENTIALS ve volání AcquireCredentialsHandle. Doporučuje se, aby volající SSPI používali výchozí hodnoty systému a neukládali omezení verzí protokolu.
Podporovaná verze protokolu TLS nebo SSL může existovat v jednom z následujících stavů:
- Povoleno: Pokud volající SSPI explicitně zakáže tuto verzi protokolu pomocí struktury SCH_CREDENTIALS, Schannel SSP může tuto verzi protokolu vyjednat s podporujícím partnerem.
- Zakázáno: Schannel SSP nevyjednává tuto verzi protokolu bez ohledu na nastavení, která může volající SSPI zadat.
Tyto hodnoty registru se konfigurují samostatně pro role klienta protokolu a serveru v podklíčích registru pojmenovaných pomocí následujícího formátu:
<SSL/TLS/DTLS> <major version number>.<minor version number><Client\Server>
Tyto podklíče specifické pro konkrétní verzi je možné vytvořit v následující cestě registru:
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Tady jsou například některé platné cesty registru s podklíči specifickými pro verzi:
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\DTLS 1.2\Client
Pokud chcete přepsat výchozí nastavení systému a nastavit podporovanou verzi protokolu (D)TLS nebo SSL na Enabled
stav, vytvořte hodnotu registru DWORD pojmenovanou Enabled
s hodnotou 1 v podklíči odpovídajícím specifické verzi.
Následující příklad ukazuje klienta TLS 1.0 nastavený na povolenou stav:
Pokud chcete přepsat výchozí nastavení systému a nastavit podporovanou verzi protokolu TLS nebo SSL na Disabled
stav, změňte hodnotu Enabled
registru DWORD na 0 podklíčem specifický pro konkrétní verzi.
Následující příklad ukazuje hodnotu DTLS 1.2 zakázanou v registru:
Přepnutí verze protokolu TLS nebo SSL do Disabled
stavu může způsobit selhání volání AcquireCredentialsHandle kvůli nedostatku verzí protokolu povolených systémem a současně povolených určitým volajícím SSPI. Kromě toho by omezením počtu verzí Enabled
TLS a SSL mohlo dojít k přerušení interoperability se vzdálenými koncovými body.
Po úpravě nastavení verze protokolu (D)TLS nebo SSL se tato změna projeví na připojeních, která jsou vytvořena pomocí popisovačů pověření otevřených následnými voláními AcquireCredentialsHandle. (D)Klientské a serverové aplikace TLS a serverové aplikace a služby mají tendenci opakovaně používat popisovače přihlašovacích údajů pro více připojení z důvodů výkonu. Aby tyto aplikace mohly opětovně získat jejich přihlašovací údaje, může být vyžadován restart aplikace nebo služby.
Tato nastavení registru se vztahují pouze na ZSP Schannel a neovlivňují žádné implementace protokolu TLS a SSL třetích stran, které by mohly být nainstalovány v systému.
Výstraha
Pokus o vytvoření nebo úpravu nastavení registru Schannel, která nejsou explicitně podrobně popsána v tomto článku, se nedoporučuje kvůli potenciálním rizikům a nezamýšleným důsledkům, které můžou vzniknout z nepodporovaných konfigurací.
Další informace o správě šifrovací sady TLS pomocí PowerShellu najdete v referenčních informacích k příkazům TLS. Pokud se zajímáte o správu nastavení protokolu TLS prostřednictvím zásad skupiny, přečtěte si téma Konfigurace pořadí šifrovacích sad PROTOKOLU TLS pomocí zásad skupiny.