Sdílet prostřednictvím


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

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