Výchozí šifrovací sady TLS pro .NET v Linuxu
.NET v Linuxu teď respektuje konfiguraci OpenSSL pro výchozí šifrovací sady při provádění protokolu TLS/SSL prostřednictvím SslStream operací třídy nebo vyšší úrovně, jako je HTTPS prostřednictvím HttpClient třídy. Pokud nejsou explicitně nakonfigurované výchozí šifrovací sady, používá .NET v Linuxu úzce omezený seznam povolených šifrovacích sad.
Změna popisu
V předchozích verzích .NET nerespektuje konfigurace systému pro výchozí šifrovací sady. Výchozí seznam šifrovacích sad pro .NET v Linuxu je velmi přesvědčivý.
Počínaje .NET 5 bude .NET v Linuxu respektovat konfiguraci OpenSSL pro výchozí šifrovací sady, když je zadána v openssl.cnf. Pokud nejsou šifrovací sady explicitně nakonfigurované, jsou jediné povolené šifrovací sady následující:
- Šifrovací sady TLS 1.3
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
Vzhledem k tomu, že toto záložní výchozí nastavení neobsahuje žádné šifrovací sady, které jsou kompatibilní s protokolem TLS 1.0 nebo TLS 1.1, tyto starší verze protokolu jsou ve výchozím nastavení deaktivovány.
Zadáním hodnoty CipherSuitePolicy sslStream pro konkrétní relaci se obsah konfiguračního souboru a/nebo výchozí výchozí nastavení .NET nahradí.
Důvod změny
Uživatelé, kteří používají .NET v Linuxu, požadovali, aby se výchozí konfigurace změnila na výchozí konfiguraci SslStream , která poskytla vysoké hodnocení zabezpečení z nástrojů pro posouzení třetích stran.
Zavedená verze
5,0
Doporučená akce
Nové výchozí hodnoty budou pravděpodobně fungovat při komunikaci s moderními klienty nebo servery. Pokud potřebujete rozbalit výchozí seznam šifrovacích sad a přijmout starší klienty (nebo kontaktovat starší servery), použijte jedno z následujících alternativních řešení:
Zadejte zásadu kryptografie tak, že nakonfigurujete CipherSuitesPolicy typ, který se týká SslServerAuthenticationOptions.CipherSuitesPolicy nebo SslClientAuthenticationOptions.CipherSuitesPolicy.
var clientOpts = new SslClientAuthenticationOptions { // ... CipherSuitesPolicy = new CipherSuitesPolicy( new[] { TlsCipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TlsCipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, }), }; using (SslStream sslStream = new SslStream(networkStream)) { sslStream.AuthenticateAsClient(clientOptions); // ... }
Nebo pro HttpClient:
var handler = new SocketsHttpHandler { SslOptions = { CipherSuitesPolicy = new CipherSuitesPolicy( new[] { TlsCipherSuite.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TlsCipherSuite.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, }), }, }; using (var httpClient = new HttpClient(handler)) { // ... }
Změňte konfigurační soubor OpenSSL. V mnoha linuxových distribucích je konfigurační soubor OpenSSL na adrese /etc/ssl/openssl.cnf.
Tento ukázkový soubor openssl.cnf je minimální soubor, který odpovídá výchozím zásadám šifrovacích sad pro .NET 5 a novějším v Linuxu. Místo nahrazení systémového souboru tyto koncepty sloučíte se souborem, který je v systému k dispozici.
openssl_conf = default_conf [default_conf] ssl_conf = ssl_sect [ssl_sect] system_default = system_default_sect [system_default_sect] CipherString = ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256
V distribucích Red Hat Enterprise Linux, CentOS Stream a Fedora se aplikace .NET ve výchozím nastavení používají k šifrovacím sadám povoleným kryptografickými zásadami pro celý systém. V těchto distribucích místo změny konfiguračního souboru OpenSSL použijte konfiguraci kryptografických zásad.
Ovlivněná rozhraní API
–