Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano informacje o ustawieniach rejestru obsługiwanych dla implementacji protokołu Transport Layer Security (TLS) oraz protokołu Secure Sockets Layer (SSL) za pośrednictwem dostawcy obsługi zabezpieczeń Schannel (SSP). Podklucze i wpisy rejestru omówione w tym artykule ułatwiają administrowanie dostawcą SSP Schannel i rozwiązywanie problemów z nim, w szczególności protokołów TLS i SSL.
Ostrożność
Te informacje są dostarczane jako odwołanie do użycia podczas rozwiązywania problemów lub sprawdzania, czy są stosowane wymagane ustawienia. Zalecamy, aby nie edytować bezpośrednio rejestru, chyba że nie ma innego alternatywnego rozwiązania. Modyfikacje rejestru nie są weryfikowane przez Edytor rejestru ani przez system operacyjny Windows przed ich zastosowaniem. W związku z tym można przechowywać nieprawidłowe wartości i może to spowodować nieodwracalne błędy w systemie. Jeśli to możliwe, zamiast bezpośrednio edytować rejestr, użyj zasad grupy lub innych narzędzi systemu Windows, takich jak Microsoft Management Console (MMC). Jeśli musisz edytować rejestr, należy zachować szczególną ostrożność.
Rejestrowanie Schannel
Istnieje osiem poziomów rejestrowania zdarzeń Schannel zapisanych w dzienniku zdarzeń systemu i możliwych do wyświetlenia przy użyciu Podglądu zdarzeń. Ta ścieżka rejestru jest przechowywana w HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
pod kluczem EventLogging z wartością DWORD ustawioną na 1.
Liczba dziesiętna lub szesnastkowa | Zdarzenia rejestrowania Schannel |
---|---|
0 | Brak zdarzeń |
1 | Zdarzenia błędów |
2 | Zdarzenia ostrzegawcze |
3 | Zdarzenia błędów i ostrzeżeń |
4 | Zdarzenia informacyjne i wydarzenia sukcesu |
5 | Zdarzenia błędów, informacji i powodzenia |
6 | Ostrzeżenia, zdarzenia informacyjne i zdarzenia sukcesu |
7 | Zdarzenia błędu, ostrzeżenia, informacyjne i powodzenia |
Uwaga / Notatka
Urządzenie należy ponownie uruchomić po zmianie poziomu rejestrowania.
MetodyMapowaniaCertyfikatów
Gdy aplikacja serwera wymaga uwierzytelniania klienta, Schannel automatycznie próbuje zamapować certyfikat dostarczony przez komputer kliencki na konto użytkownika. Możesz uwierzytelnić użytkowników logujących się przy użyciu certyfikatu klienta, tworząc mapowania, które odnoszą informacje o certyfikacie do konta użytkownika systemu Windows.
Po utworzeniu i włączeniu mapowania certyfikatów za każdym razem, gdy klient przedstawia certyfikat klienta, aplikacja serwera automatycznie kojarzy tego użytkownika z odpowiednim kontem użytkownika systemu Windows.
W większości przypadków certyfikat jest mapowany na konto użytkownika na jeden z dwóch sposobów:
- Pojedynczy certyfikat jest mapowany na jedno konto użytkownika (mapowanie jeden do jednego).
- Wiele certyfikatów jest mapowanych na jedno konto użytkownika (mapowanie wiele do jednego).
Dostawca Schannel używa czterech metod mapowania certyfikatów:
- Mapowanie usługi Kerberos dla użytkownika (S4U) (domyślnie włączone)
- Mapowanie głównej nazwy użytkownika
- Mapowanie jeden do jednego (nazywane również mapowaniem podmiotu/wystawcy)
- Mapowanie wiele-do-jednego
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Nazwa wpisu | DWORD | Domyślnie włączone |
---|---|---|
Podmiot/wystawca | 0x000000001 | Nie. |
Wystawca | 0x000000002 | Nie. |
Nazwę UPN | 0x000000004 | Nie. |
S4U2Self | 0x000000008 | Tak |
S4U2Self Jawne | 0x000000010 | Tak |
Szyfry
Szyfry TLS/SSL powinny być kontrolowane przez skonfigurowanie kolejności zestawu szyfrowania. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie zamówienia pakietu szyfrowania TLS.
Aby uzyskać informacje o domyślnych zamówieniach pakietu szyfrowania używanych przez dostawcę SSP Schannel, zobacz Zestawy szyfrowania w protokole TLS/SSL (SSP Schannel).
Zestawy szyfrowania
Konfigurowanie zestawów szyfrowania TLS/SSL powinno odbywać się przy użyciu zasad grupy, zarządzania urządzeniami przenośnymi lub programu PowerShell, zobacz Konfigurowanie kolejności szyfrowania TLS , aby uzyskać szczegółowe informacje.
Aby uzyskać informacje o domyślnych zamówieniach pakietu szyfrowania używanych przez dostawcę SSP Schannel, zobacz Zestawy szyfrowania w protokole TLS/SSL (SSP Schannel).
ClientCacheTime (Czas buforowania klienta)
Ten wpis określa okres istnienia elementu pamięci podręcznej sesji protokołu TLS klienta w milisekundach. Począwszy od systemu Windows Server 2008 i Windows Vista wartość domyślna to 10 godzin. Wartość 0 wyłącza buforowanie sesji TLS na kliencie.
Gdy klient po raz pierwszy łączy się z serwerem za pośrednictwem dostawcy SSP Schannel, wykonywane jest pełne uzgadnianie protokołu TLS/SSL. Po zakończeniu główny klucz tajny, zestaw szyfrowania i certyfikaty są przechowywane w pamięci podręcznej sesji na odpowiednim kliencie i serwerze.
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Włącz OcspStapling dla Sni
Zszywanie protokołu OCSP (Online Certificate Status Protocol) umożliwia serwerowi sieci Web, takie jak Internet Information Services (IIS), zapewnienie bieżącego stanu odwołania certyfikatu serwera podczas wysyłania certyfikatu serwera do klienta podczas uzgadniania protokołu TLS. Ta funkcja zmniejsza obciążenie serwerów OCSP, ponieważ serwer internetowy może buforować bieżący stan OCSP certyfikatu serwera i wysyłać go do wielu klientów internetowych. Bez tej funkcji każdy klient internetowy spróbuje pobrać bieżący stan OCSP certyfikatu serwera z serwera OCSP. Spowoduje to wygenerowanie dużego obciążenia na tym serwerze OCSP.
Oprócz usług IIS usługi sieci Web za pośrednictwem http.sys mogą również korzystać z tego ustawienia, w tym usług Active Directory Federation Services (AD FS) i serwera proxy aplikacji internetowej (WAP).
Domyślnie obsługa protokołu OCSP jest włączona dla witryn internetowych usług IIS, które mają proste powiązanie secure (SSL/TLS). Jednak ta obsługa nie jest domyślnie włączona, jeśli witryna sieci Web usług IIS używa albo obu następujących typów powiązań SSL/TLS:
- Wymagaj wskazania nazwy serwera
- Korzystanie ze scentralizowanego magazynu certyfikatów
W takim przypadku odpowiedź hello serwera podczas uzgadniania protokołu TLS domyślnie nie zawiera stanu zszywkowanego OCSP. To zachowanie zwiększa wydajność: implementacja OCSP systemu Windows może obsłużyć setki certyfikatów serwera. Jednak wskazanie nazwy serwera (SNI) i centralny magazyn certyfikatów (CCS) umożliwiają usługom IIS skalowanie do tysięcy witryn internetowych, które potencjalnie mają tysiące certyfikatów serwera, dlatego włączenie zszywania OCSP dla powiązań CCS może powodować problemy z wydajnością.
Ścieżka rejestru: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Dodaj następujący klucz:
"EnableOcspStaplingForSni"=dword:00000001
Aby wyłączyć, ustaw wartość DWORD na 0:
"EnableOcspStaplingForSni"=dword:00000000
Uwaga / Notatka
Włączenie tego klucza rejestru ma potencjalny wpływ na wydajność.
Hasze
Algorytmy skrótów TLS/SSL powinny być kontrolowane przez skonfigurowanie kolejności zestawu szyfrowania. Aby uzyskać szczegółowe informacje, zobacz Konfigurowanie kolejności zestawów szyfrowania TLS .
Rozmiar pamięci podręcznej wystawcy
Wpis ten kontroluje rozmiar pamięci podręcznej wystawcy i jest używany w połączeniu z mapowaniem wystawcy. Dostawca zabezpieczeń SSP Schannel próbuje zamapować wszystkich wystawców w łańcuchu certyfikatu klienta, a nie tylko bezpośredniego wystawcy certyfikatu klienta. Gdy wystawcy nie mapują na konto, co jest typowym przypadkiem, serwer może wielokrotnie mapować tę samą nazwę wystawcy, setki razy na sekundę.
Aby temu zapobiec, serwer używa mechanizmu ujemnej pamięci podręcznej. Oznacza to, że jeśli nazwa wystawcy nie zostanie powiązana z kontem, zostaje dodana do pamięci podręcznej, a dostawca SSP Schannel nie będzie próbował ponownie mapować nazwy wystawcy aż do wygaśnięcia wpisu w pamięci podręcznej. Ten wpis rejestru określa rozmiar pamięci podręcznej. Ten wpis nie istnieje domyślnie w rejestrze. Wartość domyślna to 100.
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
IssuerCacheTime (Czas pamięci podręcznej wystawcy)
Ten wpis kontroluje długość okresu czasu wygaśnięcia pamięci podręcznej w milisekundach. Dostawca zabezpieczeń SSP Schannel próbuje zamapować wszystkich wystawców w łańcuchu certyfikatu klienta, a nie tylko bezpośredniego wystawcy certyfikatu klienta. W przypadku, gdy wystawcy nie są przypisani do konta, co zazwyczaj ma miejsce, serwer może wielokrotnie próbować mapować tę samą nazwę wystawcy, setki razy w ciągu sekundy.
Aby temu zapobiec, serwer używa mechanizmu ujemnej pamięci podręcznej. Oznacza to, że jeśli nazwa wystawcy nie zostanie powiązana z kontem, zostaje dodana do pamięci podręcznej, a dostawca SSP Schannel nie będzie próbował ponownie mapować nazwy wystawcy aż do wygaśnięcia wpisu w pamięci podręcznej. Ta pamięć podręczna jest przechowywana ze względu na wydajność, dzięki czemu system nie będzie nadal próbował mapować tych samych wystawców. Ten wpis nie istnieje domyślnie w rejestrze. Wartość domyślna to 10 minut.
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Rozmiary kluczy algorytmu wymiany kluczy KeyExchangeAlgorithm
Następujące wpisy mogą nie istnieć domyślnie w rejestrze i muszą zostać utworzone ręcznie. Użycie algorytmów wymiany kluczy powinno być kontrolowane przez skonfigurowanie kolejności zestawu szyfrowania. Aby dowiedzieć się więcej na temat algorytmów kryptograficznych pakietu szyfrowania TLS/SSL, zobacz Zestawy szyfrowania w protokole TLS/SSL (SSP Schannel).
Dodano do systemu Windows 10 w wersji 1507 i Windows Server 2016.
Ścieżka rejestru: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman
Aby określić minimalny obsługiwany zakres długości bitów klucza Diffie-Hellman dla klienta TLS, utwórz ClientMinKeyBitLength
wpis. Po utworzeniu wpisu zmień wartość DWORD na żądaną długość bitu. Jeśli nie skonfigurowano, minimalna wartość to 1024 bity.
Uwaga / Notatka
Skonfigurowane krzywe eliptyczne określają siłę kryptograficzną wymiany kluczy ECDHE. Aby uzyskać więcej informacji, zobacz Zarządzanie zabezpieczeniami warstwy transportu (TLS).
MaksymalnyRozmiarPamięciPodręcznej
Ten wpis kontroluje maksymalną liczbę sesji protokołu TLS do buforowania. Ustawienie parametru MaximumCacheSize powoduje 0
wyłączenie pamięci podręcznej sesji po stronie serwera, aby zapobiec wznowieniu sesji. Zwiększenie wartości MaximumCacheSize powyżej wartości domyślnych powoduje, że Lsass.exe zużywać dodatkową pamięć. Każdy element pamięci podręcznej sesji zwykle wymaga od 2 KB do 4 KB pamięci. Ten wpis nie istnieje domyślnie w rejestrze. Wartość domyślna to 20 000 elementów.
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Wiadomości – parsowanie fragmentów
Ten wpis steruje maksymalnym dozwolonym rozmiarem akceptowanego komunikatu uzgadniania PROTOKOŁU TLS. Komunikaty większe niż dozwolony rozmiar nie są akceptowane, a uzgadnianie protokołu TLS kończy się niepowodzeniem. Te wpisy nie istnieją domyślnie w rejestrze.
Po ustawieniu wartości na 0x0
fragmentowane komunikaty nie są przetwarzane i powoduje to niepowodzenie w uzgadnianiu protokołu TLS. Dzięki temu klienci protokołu TLS lub serwery na bieżącej maszynie nie są zgodne z protokołem TLS RFCs.
Maksymalny dozwolony rozmiar można zwiększyć do 2^16 bajtów. Zezwolenie klientowi lub serwerowi na odczytywanie i przechowywanie dużych ilości niezweryfikowanych danych z sieci nie jest dobrym pomysłem i zużywa dodatkową pamięć dla każdego kontekstu zabezpieczeń.
Dodano w systemach Windows 7 i Windows Server 2008 R2: dostępna jest aktualizacja umożliwiająca programowi Internet Explorer w systemie Windows XP, w systemie Windows Vista lub w systemie Windows Server 2008 analizowanie fragmentowanych komunikatów uzgadniania TLS/SSL.
Ścieżka rejestru: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging
Aby określić maksymalny dozwolony rozmiar fragmentowanych komunikatów uzgadniania TLS, które akceptuje klient, utwórz wpis MessageLimitClient
. Po utworzeniu wpisu zmień wartość DWORD na żądaną długość bitu. Jeśli nie skonfigurowano, wartość domyślna to 0x8000
bajty.
Aby określić maksymalny dozwolony rozmiar fragmentowanych komunikatów uzgadniania protokołu TLS akceptowanych przez serwer TLS, gdy brak uwierzytelniania klienta, utwórz wpis MessageLimitServer
. Po utworzeniu wpisu zmień wartość DWORD na żądaną długość bitu. Jeśli nie skonfigurowano, wartość domyślna to 0x4000 bajty.
Aby określić maksymalny dozwolony rozmiar fragmentowanych komunikatów uzgadniania protokołu TLS akceptowanych przez serwer TLS podczas uwierzytelniania klienta, utwórz MessageLimitServerClientAuth
wpis. Po utworzeniu wpisu zmień wartość DWORD na żądaną długość bitu. Jeśli nie skonfigurowano, wartość domyślna to 0x8000 bajty.
WyślijZaufanaListaWystawców
Serwery TLS mogą wysyłać listę wyróżniających nazw akceptowalnych urzędów certyfikacji podczas żądania uwierzytelnienia klienta. Może to pomóc klientom TLS wybrać odpowiedni certyfikat klienta TLS. Serwery TLS oparte na Schannel domyślnie nie wysyłają tej listy zaufanych wystawców, ponieważ ujawnia listę urzędów certyfikacji zaufanych przez serwer przed pasywnymi obserwatorami, a także zwiększa ilość danych wymienianych w trakcie negocjacji połączenia TLS. Ustawienie tej wartości na 1 powoduje, że serwery oparte na Schannel wysyłają listy zaufanych wystawców.
Niewysłanie listy zaufanych wystawców może mieć wpływ na to, co klient wysyła w przypadku prośby o certyfikat klienta. Na przykład gdy przeglądarka Microsoft Edge odbiera żądanie uwierzytelnienia klienta, wyświetla tylko certyfikaty klienta, które łączą się w łańcuch do jednego z urzędów certyfikacji wysyłanych przez serwer. Jeśli serwer nie wysłał listy, przeglądarka Microsoft Edge wyświetla wszystkie certyfikaty klienta zainstalowane na kliencie.
To zachowanie może być pożądane. Na przykład gdy środowiska infrastruktury kluczy publicznych zawierają certyfikaty krzyżowe, certyfikaty klienta i serwera nie mają tego samego głównego urzędu certyfikacji. W związku z tym przeglądarka Microsoft Edge nie może wybrać certyfikatu, który zawiera łańcuch do jednego z urzędów certyfikacji serwera. Klienci TLS mogą oferować dowolny dostępny certyfikat klienta, gdy serwer nie wysyła listy zaufanych wystawców. Ten wpis nie istnieje domyślnie w rejestrze.
Domyślne zachowanie wyślij listę zaufanych wystawców
Wersja dla systemu Windows | Zachowanie domyślne |
---|---|
Windows Server 2012, Windows 8 i nowsze | FAŁSZYWY |
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Czas pamięci podręcznej serwera
Ten wpis określa okres istnienia elementu pamięci podręcznej sesji TLS serwera w milisekundach. Wartość domyślna to 10 godzin. Wartość 0 wyłącza buforowanie sesji TLS na serwerze i uniemożliwia wznowienie sesji. Zwiększenie wartości ServerCacheTime powyżej wartości domyślnych powoduje, że Lsass.exe zużywa dodatkową pamięć. Każdy element pamięci podręcznej sesji zwykle wymaga od 2 KB do 4 KB pamięci. Ten wpis nie istnieje domyślnie w rejestrze.
Ścieżka rejestru: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL
Domyślny czas pamięci podręcznej serwera: 10 godzin
Ustawienia wersji protokołu TLS, DTLS i SSL
Dostawca SSP SChannel implementuje wersje protokołów TLS, DTLS i SSL. Różne wersje systemu Windows obsługują różne wersje protokołu. Zestaw dostępnych wersji protokołu TLS i SSL dla całego systemu może być ograniczony (ale nie rozszerzony) przez wywołania SSPI określające strukturę SCH_CREDENTIALS w wywołaniu AcquireCredentialsHandle . Zaleca się, aby osoby wywołujące SSPI używały ustawień domyślnych systemu, a nie nakładały ograniczeń wersji protokołu.
Obsługiwana wersja protokołu TLS lub SSL może istnieć w jednym z następujących stanów:
- Włączone: chyba że obiekt wywołujący SSPI jawnie wyłączy tę wersję protokołu przy użyciu struktury SCH_CREDENTIALS, dostawca SSP Schannel może negocjować tę wersję protokołu ze współpracującym partnerem.
- Wyłączone: dostawca SSP Schannel nie negocjuje tej wersji protokołu niezależnie od ustawień, które może określić obiekt wywołujący SSPI.
Te wartości rejestru są konfigurowane oddzielnie dla ról klienta protokołu i serwera w podkluczach rejestru nazwanym przy użyciu następującego formatu:
<SSL/TLS/DTLS> <major version number>.<minor version number><Client\Server>
Te podklucze specyficzne dla wersji można utworzyć w następującej ścieżce rejestru:
HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Oto na przykład kilka prawidłowych ścieżek rejestru z podkluczami specyficznymi dla wersji:
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
Aby zastąpić domyślną wartość systemu i ustawić obsługiwaną wersję protokołu (D)TLS lub SSL w stanie Enabled
, utwórz wartość rejestru DWORD o nazwie Enabled
z wartością wpisu "1" w ramach odpowiedniego podklucza specyficznego dla wersji.
W poniższym przykładzie pokazano, że klient TLS 1.0 jest ustawiony na stan Włączone :
Aby zastąpić domyślną wartość systemu i ustawić obsługiwaną wersję protokołu (D)TLS lub SSL na stan Disabled
, zmień wartość rejestru DWORD Enabled
na "0" w odpowiednim podkluczu specyficznym dla wersji.
W poniższym przykładzie pokazano, że usługa DTLS 1.2 została wyłączona w rejestrze:
Przełączenie wersji protokołu (D)TLS lub SSL do stanu Disabled
może spowodować niepowodzenie wywołań AcquireCredentialsHandle z powodu braku wersji protokołu włączonego w całym systemie i jednocześnie dozwolonego przez poszczególne wywołujące SSPI. Ponadto zmniejszenie zestawu wersji protokołów Enabled
(D)TLS i SSL może spowodować przerwanie współdziałania z zdalnymi rówieśnikami.
Po zmodyfikowaniu ustawień wersji protokołu TLS (D)TLS lub SSL zaczynają obowiązywać na połączeniach ustanowionych przy użyciu dojść poświadczeń otwartych przez kolejne wywołania AcquireCredentialsHandle . (D)Aplikacje i usługi klienta PROTOKOŁU TLS i SSL oraz usługi serwera mają tendencję do ponownego używania dojść poświadczeń dla wielu połączeń ze względu na wydajność. Aby te aplikacje mogły ponownie uzyskać swoje dane uwierzytelniające, konieczne może być ponowne uruchomienie aplikacji lub usługi.
Te ustawienia rejestru dotyczą tylko dostawcy SSP Schannel i nie mają wpływu na żadne implementacje protokołu TLS i SSL innych firm, które mogą być zainstalowane w systemie.
Ostrzeżenie
Próba utworzenia lub dostosowania ustawień rejestru Schannel, które nie są jawnie szczegółowe w tym artykule, nie jest zalecana z powodu potencjalnych zagrożeń i niezamierzonych konsekwencji, które mogą wynikać z nieobsługiwanych konfiguracji.
Aby dowiedzieć się więcej na temat zarządzania pakietem szyfrowania TLS przy użyciu programu PowerShell, zobacz Dokumentację poleceń protokołu TLS. Jeśli chcesz zarządzać ustawieniami protokołu TLS za pomocą zasad grupy, zobacz Konfigurowanie kolejności szyfrowania TLS przy użyciu zasad grupy.