Dela via


Standard-TLS-chiffersviter för .NET i Linux

.NET i Linux respekterar nu OpenSSL-konfigurationen för standard chiffersviter när du utför TLS/SSL via SslStream klassen eller högre åtgärder, till exempel HTTPS via HttpClient klassen. När standard chiffersviter inte uttryckligen konfigureras använder .NET i Linux en strikt begränsad lista över tillåtna chiffersviter.

Ändra beskrivning

I tidigare .NET-versioner respekterar .NET inte systemkonfigurationen för standard chiffersviter. Standardlistan för chiffersviten för .NET i Linux är mycket tillåtande.

Från och med .NET 5 respekterar .NET på Linux OpenSSL-konfigurationen för standard chiffersviter när den anges i openssl.cnf. När chiffersviter inte uttryckligen konfigureras är de enda tillåtna chiffersviterna följande:

  • TLS 1.3 chiffersviter
  • 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

Eftersom standardinställningen för den här återställningen inte innehåller några chiffersviter som är kompatibla med TLS 1.0 eller TLS 1.1 inaktiveras dessa äldre protokollversioner effektivt som standard.

Om du anger ett CipherSuitePolicy-värde till SslStream för en specifik session ersätts fortfarande konfigurationsfilinnehållet och/eller .NET-standardinställningen för återställning.

Orsak till ändringen

Användare som kör .NET på Linux begärde att standardkonfigurationen för SslStream skulle ändras till en som gav ett högt säkerhetsbetyg från utvärderingsverktyg från tredje part.

Version introducerad

5,0

De nya standardvärdena fungerar troligen när du kommunicerar med moderna klienter eller servrar. Om du behöver expandera listan med standard chifferpaket för att acceptera äldre klienter (eller kontakta äldre servrar) använder du någon av följande lösningar:

  • Ange en kryptografiprincip genom att konfigurera typen som den CipherSuitesPolicy avser SslServerAuthenticationOptions.CipherSuitesPolicy eller 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);
        // ...
    }
    

    Eller för 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))
    {
        // ...
    }
    
  • Ändra OpenSSL-konfigurationsfilen. På många Linux-distributioner finns OpenSSL-konfigurationsfilen på /etc/ssl/openssl.cnf.

    Det här exemplet openssl.cnf-filen är en minimal fil som motsvarar standardprincipen för chiffersviter för .NET 5 och senare i Linux. I stället för att ersätta systemfilen sammanfogar du dessa begrepp med den fil som finns i systemet.

    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
    

I Distributionerna Red Hat Enterprise Linux, CentOS Stream och Fedora är .NET-program som standard de chiffersviter som tillåts av de systemomfattande kryptografiska principerna. På dessa distributioner använder du konfigurationen av kryptoprinciper i stället för att ändra OpenSSL-konfigurationsfilen.

Berörda API:er

Ej tillämpligt