Najlepsze rozwiązania dotyczące protokołu Transport Layer Security (TLS) w programie .NET Framework
Uwaga
Ta strona zawiera informacje dotyczące protokołu TLS programu .NET Framework. Jeśli szukasz informacji dotyczących protokołu TLS dla platformy .NET, zobacz: Tls/SSL Best Practices (Najlepsze rozwiązania dotyczące protokołu TLS/SSL)
Program .NET Framework obsługuje używanie protokołu Transport Layer Security (TLS) do zabezpieczania komunikacji sieciowej.
Co to jest protokół Transport Layer Security (TLS)?
Ostrzeżenie
Protokoły TLS 1.0 i 1.1 zostały wycofane przez RFC8996. Ten dokument obejmuje tylko protokoły TLS 1.2 i TLS 1.3.
Protokół Transport Layer Security (TLS) to najnowsza wersja standardu przeznaczona do ochrony prywatności informacji przekazywanych przez Internet. Protokół TLS 1.3 jest standardem, który zapewnia ulepszenia zabezpieczeń w porównaniu z poprzednimi wersjami. W tym artykule przedstawiono zalecenia dotyczące zabezpieczania aplikacji .NET Framework korzystających z protokołu TLS.
Kto może skorzystać z tego dokumentu?
- Bezpośrednio przy użyciu System.Net interfejsów API (na przykład System.Net.Http.HttpClient i System.Net.Security.SslStream).
- Bezpośrednio przy użyciu klientów i usług WCF przy użyciu System.ServiceModel przestrzeni nazw.
Obsługa protokołu TLS w programie .NET Framework
Ponieważ program .NET Framework jest zależny od Schannel
systemu Windows, które wersje można negocjować, a która wersja będzie używana, zależy od systemu operacyjnego.
Oto zaktualizowana przykładowa tabela przedstawiająca najbardziej obsługiwaną wersję protokołu TLS dla różnych kombinacji wersji systemu operacyjnego i wersji docelowych programu .NET Framework:
Wersja docelowa programu .NET Framework | Windows 10 | Windows 11 |
---|---|---|
3.5 | TLS 1.2 | TLS 1.2 |
4.6.2 | TLS 1.2 | TLS 1.3 |
4.7 | TLS 1.2 | TLS 1.3 |
4.7.1 | TLS 1.2 | TLS 1.3 |
4.7.2 | TLS 1.2 | TLS 1.3 |
4.8 | TLS 1.2 | TLS 1.3 |
4.8.1 | TLS 1.2 | TLS 1.3 |
Aby uzyskać więcej informacji, zobacz Obsługa wersji protokołu TLS w usłudze Schannel.
Zalecenia
- W przypadku protokołu TLS 1.3 docelowy program .NET Framework 4.8 lub nowszy. Sprawdź sekcję Audit your code (Przeprowadź inspekcję kodu ), jak zweryfikować plik
target framework
. - Nie należy jawnie określać wersji protokołu TLS, tj. nie używaj przeciążeń
SslStream
metody, które przyjmują jawnySslProtocols
parametr.- Dzięki temu kod pozwoli systemowi operacyjnemu zdecydować o wersji protokołu TLS.
- Jeśli musisz ustawić wartość ServicePointManager.SecurityProtocol, ustaw ją na SecurityProtocolType.SystemDefault. Będzie również używać domyślnego systemu operacyjnego.
- Jeśli musisz użyć przeciążeń
SslStream
metody, które przyjmują jawnySslProtocols
parametr, należy przekazaćSslProtocols.SystemDefault
jako argument. Będzie również używać domyślnego systemu operacyjnego.
- Wykonaj dokładną inspekcję kodu, aby sprawdzić, czy nie określasz jawnie wersji protokołu TLS lub SSL.
Ostrzeżenie
Nie używaj elementu SslProtocols.Default
, ponieważ ustawia wersję protokołu TLS na ssl3 i TLS 1.0, które są przestarzałe.
Gdy aplikacja umożliwia systemowi operacyjnemu wybranie wersji protokołu TLS:
- Automatycznie korzysta z nowych protokołów TLS dodanych w przyszłości.
- System operacyjny blokuje protokoły, które nie są wykrywane jako bezpieczne (np. SSL3 i TLS 1.0).
W tym artykule wyjaśniono, jak włączyć najsilniejsze zabezpieczenia dostępne dla wersji programu .NET Framework przeznaczonej dla aplikacji i jej działania. Gdy aplikacja jawnie ustawia protokół zabezpieczeń i wersję, rezygnuje z innej alternatywy i rezygnuje z domyślnego zachowania programu .NET Framework i systemu operacyjnego. Jeśli chcesz, aby aplikacja mogła negocjować połączenie TLS 1.3, jawne ustawienie na niższą wersję protokołu TLS uniemożliwia połączenie TLS 1.3.
Jeśli nie możesz jawnie określić wersji protokołu, zdecydowanie zalecamy określenie protokołu TLS 1.2 lub TLS 1.3 (czyli currently considered secure
). Aby uzyskać wskazówki dotyczące identyfikowania i usuwania zależności protokołu TLS 1.0, pobierz oficjalny dokument Rozwiązywanie problemów z protokołem TLS 1.0.
Program WCF obsługuje protokół TLS 1.2 jako domyślny w programie .NET Framework 4.7. Począwszy od programu .NET Framework 4.7.1, domyślnie program WCF jest w wersji skonfigurowanej przez system operacyjny. Jeśli aplikacja jest jawnie skonfigurowana za pomocą SslProtocols.None
programu , program WCF używa domyślnego ustawienia systemu operacyjnego podczas korzystania z transportu NetTcp.
Pytania dotyczące tego dokumentu można zadać w artykule GitHub Issue Transport Layer Security (TLS) best practices with the .NET Framework (Najlepsze rozwiązania dotyczące protokołu Transport Layer Security (TLS).
Inspekcja kodu i wprowadzanie zmian w kodzie
W przypadku aplikacji ASP.NET sprawdź <system.web><httpRuntime targetFramework>
element web.config , aby sprawdzić, czy używasz docelowej wersji programu .NET Framework.
Aby zapoznać się z formularzami systemu Windows i innymi aplikacjami, zobacz How to: Target a Version of the .NET Framework (Instrukcje: określanie wersji docelowej wersji programu .NET Framework).
Skorzystaj z poniższych sekcji, aby sprawdzić, czy nie używasz określonej wersji protokołu TLS ani SSL.
Jeśli musisz jawnie ustawić protokół zabezpieczeń
Jeśli musisz jawnie ustawić protokół zabezpieczeń zamiast zezwalać na wybranie protokołu zabezpieczeń platformy .NET lub systemu operacyjnego, wybierz następujące protokoły:
- W przypadku programu .NET Framework 3.5: TLS 1.2
- W przypadku programu .NET Framework 4.6.2 lub nowszego: TLS 1.3
Jeśli nie możesz znaleźć określonych protokołów w wyliczenie, możesz dodać je jako plik rozszerzenia. Sprawdź poniżej:
SslProtocolExtensions.cs
namespace System.Security.Authentication
{
public static class SslProtocolsExtensions
{
// For .NET Framework 3.5
public const SslProtocols Tls12 = (SslProtocols)3072;
// For .NET Framework 4.6.2 and later
public const SslProtocols Tls13 = (SslProtocols)12288;
}
}
SecurityProtocolExtensions.cs
using System.Security.Authentication;
namespace System.Net
{
public static class SecurityProtocolTypeExtensions
{
// For .NET Framework 3.5
public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;
// For .NET Framework 4.6.2 and later
public const SecurityProtocolType Tls13 = (SecurityProtocolType)SslProtocolsExtensions.Tls13;
}
}
Aby uzyskać więcej informacji, zobacz Support for TLS System Default Versions included in .NET Framework 3.5 on Windows 8.1 and Windows Server 2012 R2 (Obsługa domyślnych wersji systemu TLS w programie .NET Framework 3.5 w systemach Windows 8.1 i Windows Server 2012 R2).
W przypadku interfejsów API System.Net (HttpClient, SslStream)
Jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji 4.7 lub nowszej
W poniższych sekcjach pokazano, jak skonfigurować aplikację do korzystania z currently considered secure versions
protokołu TLS. (TLS 1.2, TLS 1.3)
W przypadku elementów HttpClient i HttpWebRequest
ServicePointManager, przy użyciu programu .NET Framework 4.7 i nowszych wersji, użyje domyślnego protokołu zabezpieczeń skonfigurowanego w systemie operacyjnym. Aby uzyskać domyślny wybór systemu operacyjnego, jeśli to możliwe, nie ustawiaj wartości dla ServicePointManager.SecurityProtocol właściwości , która domyślnie ma wartość SecurityProtocolType.SystemDefault.
SecurityProtocolType.SystemDefault Ponieważ ustawienie powoduje ServicePointManager użycie domyślnego protokołu zabezpieczeń skonfigurowanego przez system operacyjny, aplikacja może działać inaczej w zależności od systemu operacyjnego, na podstawie na nim uruchomiony. Na przykład system Windows 10 używa protokołu TLS 1.2, a system Windows 11 używa protokołu TLS 1.3.
Dla protokołu SslStream
SslStream, przy użyciu programu .NET Framework 4.7 i nowszych wersji, domyślnie system operacyjny wybiera najlepszy protokół zabezpieczeń i wersję. Aby uzyskać najlepszy wybór domyślnego systemu operacyjnego, jeśli to możliwe, nie używaj przeciążeń SslStream metody, które przyjmują jawny SslProtocols parametr. W przeciwnym razie przekaż polecenie SslProtocols.None. Zalecamy, aby nie używać Defaultpolecenia ; ustawienie SslProtocols.Default
wymusza użycie protokołu SSL 3.0 /TLS 1.0 i uniemożliwia protokół TLS 1.2.
Nie ustawiaj wartości dla SecurityProtocol właściwości (dla sieci HTTP).
Nie używaj przeciążeń SslStream metody, które przyjmują jawny SslProtocols parametr (dla sieci gniazd TCP). Podczas ponownego pobierania aplikacji do programu .NET Framework w wersji 4.7 lub nowszej będziesz przestrzegać zaleceń dotyczących najlepszych rozwiązań.
W przypadku aplikacji WCF
Jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji 4.7 lub nowszej
W poniższych sekcjach pokazano, jak skonfigurować aplikację do korzystania z currently considered secure versions
protokołu TLS. (TLS 1.2, TLS 1.3)
Korzystanie z transportu TCP przy użyciu zabezpieczeń transportu z poświadczeniami certyfikatu
WCF używa tego samego stosu sieciowego co reszta programu .NET Framework.
Jeśli jest przeznaczona wersja 4.7.1, program WCF jest skonfigurowany tak, aby zezwalał systemowi operacyjnemu na wybór najlepszego protokołu zabezpieczeń domyślnie, chyba że jawnie skonfigurowano:
- W pliku konfiguracji aplikacji.
- Lub w aplikacji w kodzie źródłowym.
Domyślnie program .NET Framework 4.7 i nowsze wersje są skonfigurowane do używania protokołu TLS 1.2 i zezwalania na połączenia przy użyciu protokołu TLS 1.1 lub TLS 1.0. Skonfiguruj program WCF, aby umożliwić systemowi operacyjnemu wybór najlepszego protokołu zabezpieczeń, konfigurując powiązanie do używania programu SslProtocols.None. Można to ustawić na .SslProtocols SslProtocols.None
dostęp do programu można uzyskać z witryny Transport. NetTcpSecurity.Transport
dostęp do programu można uzyskać z witryny Security.
Jeśli używasz powiązania niestandardowego:
- Skonfiguruj program WCF, aby zezwolić systemowi operacyjnemu na wybór najlepszego protokołu zabezpieczeń, ustawiając opcję SslProtocols .SslProtocols.None
- Możesz też skonfigurować protokół używany ze ścieżką
system.serviceModel/bindings/customBinding/binding/sslStreamSecurity:sslProtocols
konfiguracji .
Jeśli nie używasz powiązania niestandardowego i konfigurujesz powiązanie WCF przy użyciu konfiguracji, ustaw protokół używany ze ścieżką system.serviceModel/bindings/netTcpBinding/binding/security/transport:sslProtocols
konfiguracji .
Używanie zabezpieczeń komunikatów z poświadczeniami certyfikatu
Program .NET Framework 4.7 i nowsze wersje domyślnie używają protokołu określonego SecurityProtocol we właściwości . Gdy parametr AppContextSwitch Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols
jest ustawiony na true
wartość , program WCF wybiera najlepszy protokół, maksymalnie TLS 1.0.
Jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji starszej niż 4.7
W poniższych sekcjach pokazano, jak skonfigurować aplikację do korzystania z currently considered secure versions
protokołu TLS. (TLS 1.2, TLS 1.3)
Korzystanie z programu .NET Framework 4.6.2 przy użyciu zabezpieczeń transportu TCP z poświadczeniami certyfikatu
Platforma WCF automatycznie wybiera najwyższy protokół dostępny do protokołu TLS 1.2, chyba że jawnie skonfigurujesz wersję protokołu. Aby uzyskać więcej informacji, zobacz poprzednią sekcję Dla transportu TCP WCF przy użyciu zabezpieczeń transportu z poświadczeniami certyfikatu.
Używanie programu .NET Framework 3.5 zabezpieczeń transportu TCP z poświadczeniami certyfikatu
Te wersje platformy WCF są jawnie określane do używania wartości SSL 3.0 i TLS 1.0. Tych wartości nie można zmienić. Aby używać protokołu TLS 1.2, należy zaktualizować program NET Framework 4.6.2 lub nowszą wersję i przeprowadzić ich ponowną wersję.
Konfigurowanie zabezpieczeń za pomocą przełączników AppContext (w przypadku programu .NET Framework w wersji 4.6.2 lub nowszej)
Przełączniki AppContext opisane w tej sekcji są istotne, jeśli aplikacja jest przeznaczona dla aplikacji lub działa w programie .NET Framework 4.6.2 lub nowszych wersjach. Czy domyślnie, czy też przez ich jawne ustawienie, przełączniki powinny być false
, jeśli to możliwe. Jeśli chcesz skonfigurować zabezpieczenia za pośrednictwem jednego lub obu przełączników, nie należy określać wartości protokołu zabezpieczeń w kodzie; spowoduje to zastąpienie przełącznika (es).
W przypadku interfejsów API System.Net (HttpClient, SslStream)
Przełączniki mają taki sam efekt, niezależnie od tego, czy korzystasz z sieci HTTP (ServicePointManager) czy sieci gniazd TCP (SslStream).
Switch.System.Net.DontEnableSchUseStrongCrypto
Wartość dla przyczyn, dla Switch.System.Net.DontEnableSchUseStrongCrypto
których aplikacja używa silnej false
kryptografii. Wartość false
dla używa DontEnableSchUseStrongCrypto
bezpieczniejszych protokołów sieciowych (TLS 1.2 i TLS 1.1) i blokuje protokoły, które nie są bezpieczne. Aby uzyskać więcej informacji, zobacz flagę SCH_USE_STRONG_CRYPTO. Wartość wyłącza silną true
kryptografię dla aplikacji. Ten przełącznik ma wpływ tylko na połączenia klienta (wychodzące) w aplikacji.
Jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji 4.6.2 lub nowszej, spowoduje to przełączenie wartości domyślnych na false
. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja działa na platformie .NET Framework 4.6.2, ale jest przeznaczona dla starszej wersji, przełącz wartość domyślną na true
. W takim przypadku należy jawnie ustawić go na false
wartość .
DontEnableSchUseStrongCrypto
Powinna mieć wartość tylko true
wtedy, gdy musisz nawiązać połączenie ze starszymi usługami, które nie obsługują silnej kryptografii i nie można ich uaktualnić.
Switch.System.Net.DontEnableSystemDefaultTlsVersions
Wartość parametru false
dla Switch.System.Net.DontEnableSystemDefaultTlsVersions
powoduje, że aplikacja zezwala systemowi operacyjnemu na wybór protokołu. Wartość true
powoduje, że aplikacja używa protokołów wybranych przez program .NET Framework.
Jeśli aplikacja jest przeznaczona dla platformy .NET Framework w wersji 4.7 lub nowszej, spowoduje to przełączenie wartości domyślnych na false
. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja działa w wersji .NET Framework 4.7 lub nowszej, ale jest przeznaczona dla starszej wersji, przełącz wartość domyślną na true
. W takim przypadku należy jawnie ustawić go na false
wartość .
W przypadku aplikacji WCF
Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols
Wartość parametru false
dla Switch.System.ServiceModel.DisableUsingServicePointManagerSecurityProtocols
powoduje, że aplikacja używa wartości zdefiniowanej w ServicePointManager.SecurityProtocols
w celu zabezpieczenia komunikatów przy użyciu poświadczeń certyfikatu. Wartość używa najwyższego true
dostępnego protokołu do TLS1.0
W przypadku aplikacji przeznaczonych dla programu .NET Framework 4.7 lub nowszych wersji ta wartość jest domyślnie ustawiona na false
. W przypadku aplikacji przeznaczonych dla platformy .NET Framework w wersji 4.6.2 lub starszej ta wartość jest domyślnie ustawiona na true
.
Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions
Wartość false
dla Switch.System.ServiceModel.DontEnableSystemDefaultTlsVersions
ustawia domyślną konfigurację, aby umożliwić systemowi operacyjnemu wybranie protokołu. Wartość true
ustawia wartość domyślną na najwyższy dostępny protokół, do TLS1.2.
W przypadku aplikacji przeznaczonych dla programu .NET Framework 4.7.1 i nowszych wersji ta wartość jest domyślnie ustawiona na false
. W przypadku aplikacji przeznaczonych dla platformy .NET Framework 4.7 i starszych ta wartość jest domyślnie ustawiona na true
.
Aby uzyskać więcej informacji na temat protokołów TLS, zobacz Środki zaradcze: protokoły TLS. Aby uzyskać więcej informacji na temat AppContext
przełączników, zobacz <AppContextSwitchOverrides> Element
.
Konfigurowanie zabezpieczeń za pośrednictwem rejestru systemu Windows
Ostrzeżenie
Ustawienie kluczy rejestru wpływa na wszystkie aplikacje w systemie. Użyj tej opcji tylko wtedy, gdy masz pełną kontrolę nad maszyną i możesz kontrolować zmiany w rejestrze.
Jeśli ustawienie jednego lub obu AppContext
przełączników nie jest opcją, możesz kontrolować protokoły zabezpieczeń używane przez aplikację z kluczami rejestru systemu Windows opisanymi w tej sekcji. Jeśli aplikacja działa w programie .NET Framework 3.5, może nie być możliwe użycie jednego lub obu AppContext
przełączników lub jeśli nie możesz edytować pliku konfiguracji. Jeśli chcesz skonfigurować zabezpieczenia za pomocą rejestru, nie należy określać wartości protokołu zabezpieczeń w kodzie; spowoduje to zastąpienie ustawienia rejestru.
Nazwy kluczy rejestru są podobne do nazw odpowiednich AppContext
przełączników, ale bez DontEnable
poprzedzania nazwy. Na przykład AppContext
przełącznik DontEnableSchUseStrongCrypto
jest kluczem rejestru O nazwie SchUseStrongCrypto.
Te klucze są dostępne we wszystkich wersjach programu .NET Framework.
Wszystkie klucze rejestru opisane poniżej mają taki sam efekt, niezależnie od tego, czy wykonujesz sieć HTTP (ServicePointManager) czy sieć gniazd TCP (SslStream).
SchUseStrongCrypto
Wpis HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SchUseStrongCrypto
rejestru ma wartość typu DWORD. Wartość 1 powoduje, że aplikacja używa silnej kryptografii. Silna kryptografia używa bezpieczniejszych protokołów sieciowych (TLS 1.2 i TLS 1.1) oraz blokuje protokoły, które nie są bezpieczne. Wartość 0 wyłącza silną kryptografię. Aby uzyskać więcej informacji, zobacz flagę SCH_USE_STRONG_CRYPTO. To ustawienie rejestru ma wpływ tylko na połączenia klienta (wychodzące) w aplikacji.
Jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji 4.6 lub nowszej, ten klucz domyślnie ma wartość 1. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja jest przeznaczona dla platformy .NET Framework 4.5.2 lub starszych wersji, klucz domyślnie to 0. W takim przypadku należy jawnie ustawić jego wartość na 1.
Ten klucz powinien mieć wartość 0, jeśli musisz połączyć się ze starszymi usługami, które nie obsługują silnej kryptografii i nie można ich uaktualnić.
SystemDefaultTlsVersions
Wpis HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\<VERSION>: SystemDefaultTlsVersions
rejestru ma wartość typu DWORD. Wartość 1 powoduje, że aplikacja zezwala systemowi operacyjnemu na wybór protokołu. Wartość 0 powoduje, że aplikacja używa protokołów wybranych przez program .NET Framework.
<VERSION>
musi mieć wartość v4.0.30319 (dla programu .NET Framework 4 lub nowszej) lub 2.0.50727 (dla programu .NET Framework 3.5).
Jeśli aplikacja jest przeznaczona dla programu .NET Framework w wersji 4.7 lub nowszej, ten klucz domyślnie ma wartość 1. Jest to bezpieczne ustawienie domyślne, które zalecamy. Jeśli aplikacja jest przeznaczona dla programu .NET Framework 4.6.1 lub starszych wersji, klucz jest domyślnie ustawiona na 0. W takim przypadku należy jawnie ustawić jego wartość na 1.
Aby uzyskać więcej informacji, zobacz Aktualizacja zbiorcza dla systemu Windows 10 w wersji 1511 i Windows Server 2016 Technical Preview 4: 10 maja 2016 r.
Aby uzyskać więcej informacji o programie .NET Framework 3.5.1, zobacz Support for TLS System Default Versions included in .NET Framework 3.5.1 on Windows 7 SP1 and Server 2008 R2 SP1 (Obsługa domyślnych wersji systemu TLS dostępnych w programie .NET Framework 3.5.1 w systemach Windows 7 z dodatkiem SP1 i Server 2008 R2 z dodatkiem SP1).
Poniżej przedstawiono następujący element . Plik REG ustawia wpisy rejestru i ich warianty na najbardziej bezpieczne wartości:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001
Konfigurowanie protokołów Schannel w rejestrze systemu Windows
Rejestru można użyć do precyzyjnej kontroli nad protokołami negocjowanych przez klienta i/lub aplikację serwera. Sieć aplikacji przechodzi przez usługę Schannel (czyli inną nazwę bezpiecznego kanału). Konfigurując Schannel
program , można skonfigurować zachowanie aplikacji.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
Zacznij od klucza rejestru. W tym kluczu można utworzyć wszystkie podklucze w zestawie TLS 1.2
, TLS 1.3
. W każdym z tych podklucza można tworzyć podklucze Client
i/lub Server
. W obszarze Client
i Server
można utworzyć wartości DisabledByDefault
DWORD (0 lub 1) i Enabled
(0 lub 1).
Aby uzyskać więcej informacji, zobacz: Ustawienia rejestru TLS — Schannel
Flaga SCH_USE_STRONG_CRYPTO
Po włączeniu (domyślnie przez AppContext
przełącznik lub rejestr systemu Windows) program .NET Framework używa SCH_USE_STRONG_CRYPTO
flagi, gdy aplikacja inicjuje połączenie TLS z serwerem. Program .NET Framework przekazuje flagę, aby Schannel
poinstruować ją o wyłączeniu znanych słabych algorytmów kryptograficznych, zestawów szyfrowania i wersji protokołu TLS/SSL, które mogą być w przeciwnym razie włączone w celu lepszego współdziałania. Aby uzyskać więcej informacji, zobacz:
Flaga SCH_USE_STRONG_CRYPTO
jest również przekazywana do Schannel
dla połączeń klienta (wychodzących), gdy jawnie używasz Tls11
wartości lub wyliczonych SecurityProtocolType wartości lub Tls12
SslProtocols. Flaga SCH_USE_STRONG_CRYPTO
jest używana tylko w przypadku połączeń, w których aplikacja pełni rolę klienta. Słabe protokoły i algorytmy można wyłączyć, gdy aplikacje pełnią rolę serwera, konfigurując ustawienia rejestru całego Schannel
komputera.