Freigeben über


Entfernen der Verwendung von TLS 1.0 und 1.1 mit Azure Cache for Redis

Um dem branchenweiten Trend zur ausschließlichen Verwendung von TLS (Transport Layer Security) ab Version 1.2 zu folgen, wird für Azure Cache for Redis ab März 2025 TLS 1.2 vorausgesetzt. Die TLS-Versionen 1.0 und 1.1 sind bekanntermaßen anfällig für Angriffe wie BEAST und POODLE und weisen andere allgemeine Sicherheitslücken und Schwachstellen (CVE, Common Vulnerabilities and Exposures) auf.

Die TLS-Versionen 1.0 und 1.1 unterstützen auch keine modernen Verschlüsselungsmethoden und Verschlüsselungssammlungen, wie sie durch die Compliancestandards der Payment Card Industry (PCI) empfohlen werden. Einige dieser Sicherheitslücken werden in diesem Blog zur TLS-Sicherheit ausführlicher erläutert.

Wichtig

Ab dem 1. März 2025 wird TLS 1.2 erzwungen.

Wichtig

Der Inhalt zur Einstellung von TLS 1.0/1.1 in diesem Artikel gilt nicht für Azure Cache for Redis Enterprise/Enterprise Flash, da die Enterprise-Dienstebenen nur TLS 1.2 oder höher unterstützen.

Im Rahmen dieser Initiative werden die folgenden Änderungen an Azure Cache for Redis vorgenommen:

  • Phase 1: Für die Erstellung neuer Caches wird TLS 1.0/1.1 in Azure Cache for Redis nicht mehr als Option für die Einstellung MinimumTLSVersion angeboten. Vorhandene Cache-Instanzen werden zu diesem Zeitpunkt nicht aktualisiert. Sie können MinimumTLSVersion für bestehende Caches nicht mehr auf 1.0 oder 1.1 festlegen.
  • Phase 2: Azure Cache for Redis unterstützt TLS 1.1 und TLS 1.0 ab dem 1. März 2025 nicht mehr. Nach dieser Änderung muss Ihre Anwendung für die Kommunikation mit dem Cache TLS 1.2 oder höher verwenden. Der Dienst Azure Cache for Redis bleibt verfügbar, während MinimumTLSVersion für alle Caches auf 1.2 aktualisiert wird.
Datum Beschreibung
September 2023 Ankündigung der Einstellung von TLS 1.0/1.1
1. März 2024 Ab dem 1. März 2024 können keine neuen Caches mehr mit der TLS-Mindestversion 1.0 oder 1.1 erstellt werden, und MinimumTLSVersion kann für bestehende Caches nicht mehr auf 1.0 oder 1.1 festgelegt werden. Die TLS-Mindestversion wird zu diesem Zeitpunkt nicht automatisch für vorhandene Caches aktualisiert.
31. Oktober 2024 Stellen Sie sicher, dass Ihre sämtlichen Anwendungen Verbindungen mit Azure Cache for Redis über TLS 1.2 herstellen und dass in Ihren Cacheeinstellungen die TLS-Mindestversion auf 1.2 festgelegt ist.
Ab dem 1. März 2025 Die TLS-Mindestversion wird für alle Cache-Instanzen auf Version 1.2 aktualisiert. Dies bedeutet, dass Azure Cache for Redis-Instanzen momentan Verbindungen mit TLS 1.0 oder 1.1 ablehnen.

Wichtig

Der Inhalt dieses Artikels gilt nicht für Azure Cache for Redis Enterprise/Enterprise Flash, da die Enterprise-Dienstebenen nur TLS 1.2 unterstützen.

Im Rahmen dieser Änderung hebt Azure Cache for Redis die Unterstützung für ältere Verschlüsselungssammlungen auf, die nicht sicher sind. Wenn der Cache mit TLS 1.2 als Mindestversion konfiguriert ist, werden nur die folgenden Verschlüsselungssammlungen unterstützt:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

Die folgenden Abschnitte bieten einen Leitfaden zum Erkennen von Abhängigkeiten von diesen früheren TLS-Versionen und zum Entfernen der Versionen aus Ihrer Anwendung.

Überprüfen von TLS-Versionen, die von Azure Cache for Redis unterstützt werden

Sie können dieses PowerShell-Skript verwenden, um die von Ihrem Azure Cache for Redis-Endpunkt unterstützten TLS-Versionen zu überprüfen. Wenn Ihre Redis-Instanz in ein virtuelles Netzwerk (VNet) eingefügt wurde, müssen Sie dieses Skript auf einem virtuellen Computer im VNet mit Zugriff auf den Azure Cache for Redis-Endpunkt ausführen.

Wenn das Ergebnis Tls Enabled und/oder Tls 11 Enabled anzeigt, befolgen Sie die Anweisungen, um Azure Cache for Redis für die Verwendung von TLS 1.2 zu konfigurieren. Wenn das Ergebnis nur Tls12 Enabled anzeigt und die Clientanwendung ohne Fehler eine Verbindung herstellen kann, ist keine Aktion erforderlich.

    param(
    [Parameter(Mandatory=$true)]
    [string]$redisCacheName,
    [Parameter(Mandatory=$false)]
    [string]$dnsSuffix = ".redis.cache.windows.net",
    [Parameter(Mandatory=$false)]
    [int]$connectionPort = 6380,
    [Parameter(Mandatory=$false)]
    [int]$timeoutMS = 2000
    )
    $redisEndpoint = "$redisCacheName$dnsSuffix"
    $protocols = @(
        [System.Security.Authentication.SslProtocols]::Tls,
        [System.Security.Authentication.SslProtocols]::Tls11,
        [System.Security.Authentication.SslProtocols]::Tls12
    )
    $protocols | % {
        $ver = $_
        $tcpClientSocket = New-Object Net.Sockets.TcpClient($redisEndpoint, $connectionPort )
        if(!$tcpClientSocket)
        {
            Write-Error "$ver- Error Opening Connection: $port on $computername Unreachable"
            exit 1;
        }
        else
        {
            $tcpstream = $tcpClientSocket.GetStream()
            $sslStream = New-Object System.Net.Security.SslStream($tcpstream,$false)
            $sslStream.ReadTimeout = $timeoutMS
            $sslStream.WriteTimeout = $timeoutMS
            try
            {
                $sslStream.AuthenticateAsClient($redisEndpoint, $null, $ver, $false)
                Write-Host "$ver Enabled"
            }
            catch [System.IO.IOException]
            {
                $null = $_
                #Write-Host "$ver Disabled"
            }
            catch
            {
                $null = $_
                #Write-Error "Unexpected exception $_"
            }
        }
    }

Azure Cache for Redis für die Verwendung von TLS 1.2 konfigurieren

Sie können TLS 1.2 im Cache konfigurieren, indem Sie den Wert für die TLS-Mindestversion in den erweiterten Einstellungen Ihres Caches im Azure-Portal auf TLS 1.2 festlegen.

  1. Um den Cache für die Verwendung von TLS 1.2 zu konfigurieren, navigieren Sie zunächst zum Ressourcenmenü Ihres Caches, und wählen Sie dort Erweiterte Einstellungen aus.

  2. Wählen Sie im Arbeitsbereich für die TLS-Mindestversion 1.2 aus. Wählen Sie anschließend Speichern aus.

Screenshot: Festlegen von TLS 1.2 für den Cache im Azure-Portal

Sie können hierzu auch PowerShell verwenden. Bevor Sie den Befehl ausführen, müssen Sie das Az.RedisCache-Modul installieren.

   Set-AzRedisCache -Name <YourRedisCacheName> -MinimumTlsVersion "1.2"

Wenn Sie die TLS-Version über die CLI einstellen wollen, ist die --minimum-tls-version nur zum Zeitpunkt der Erstellung der Redis-Instanz verfügbar und das Ändern der minimum-tls-version in einer vorhandenen Redis-Instanz wird nicht unterstützt.

Hinweis

Der Dienst „Azure Cache for Redis“ muss während der Migration von TLS 1.2 oder höher verfügbar sein.

Überprüfen, ob Ihre Clientanwendung bereits konform ist

Sie können herausfinden, ob Ihre Anwendung mit TLS 1.2 kompatibel ist, indem Sie wie zuvor erklärt den Wert TLS-Mindestversion in einem Test- oder Stagingcache auf TLS 1.2 festlegen und anschließend Tests ausführen. Wenn die Anwendung nach dieser Änderung weiterhin erwartungsgemäß ausgeführt wird, ist sie wahrscheinlich konform. Möglicherweise müssen Sie die in der Anwendung verwendete Redis-Clientbibliothek so konfigurieren, dass TLS 1.2 aktiviert wird, um eine Verbindung mit Azure Cache for Redis herzustellen.

Konfigurieren Ihrer Client-Anwendung für die Verwendung von TLS 1.2

In den meisten Anwendungen werden Redis-Clientbibliotheken für die Kommunikation mit den zugehörigen Caches verwendet. Hier finden Sie Anweisungen zum Konfigurieren einiger gängiger Clientbibliotheken in verschiedenen Programmiersprachen und Frameworks für die Verwendung von TLS 1.2.

.NET

Bei Redis .NET-Clients wird standardmäßig die früheste TLS-Version in .NET Framework 4.5.2 oder früher und die neueste TLS-Version in .NET Framework 4.6 oder höher verwendet. Wenn Sie eine ältere Version von .NET Framework verwenden, aktivieren Sie TLS 1.2 manuell:

  • StackExchange.Redis: Legen Sie ssl=true und sslProtocols=tls12 in der Verbindungszeichenfolge fest.
  • ServiceStack.Redis: Befolgen Sie die Anweisungen für ServiceStack.Redis. Dazu ist mindestens ServiceStack.Redis v5.6 erforderlich.

.NET Core

Redis .NET Core-Clients verwenden standardmäßig die TLS-Standardversion des Betriebssystems, die vom Betriebssystem abhängig ist.

Je nach Betriebssystemversion und den angewandten Patches kann die tatsächliche TLS-Standardversion variieren. Weitere Informationen finden Sie unter Bewährte Methoden für Transport Layer Security (TLS) mit .NET-Framework.

Wenn Sie ein altes Betriebssystem verwenden oder nur sichergehen möchten, wird empfohlen, die bevorzugte TLS-Version manuell über den Client zu konfigurieren.

Java

Bei Redis Java-Clients wird TLS 1.0 für Java Version 6 oder früher verwendet. Bei Jedis, Lettuce, und Redisson kann keine Verbindung mit Azure Cache for Redis hergestellt werden, wenn TLS 1.0 für den Cache deaktiviert ist. Führen Sie ein Upgrade Ihres Java-Frameworks durch, um neue TLS-Versionen zu verwenden.

Für Java 7 wird bei Redis-Clients standardmäßig TLS 1.2 nicht verwendet, die Clients können aber dafür konfiguriert werden. In Jedis können Sie die zugrunde liegenden TLS-Einstellungen z. B. mit dem folgenden Codeschnipsel angeben:

SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLParameters sslParameters = new SSLParameters();
sslParameters.setEndpointIdentificationAlgorithm("HTTPS");
sslParameters.setProtocols(new String[]{"TLSv1.2"});
 
URI uri = URI.create("rediss://host:port");
JedisShardInfo shardInfo = new JedisShardInfo(uri, sslSocketFactory, sslParameters, null);
 
shardInfo.setPassword("cachePassword");
 
Jedis jedis = new Jedis(shardInfo);

Die Lettuce- und Redisson-Clients unterstützen noch nicht das Festlegen der TLS-Version. Es erfolgt ein Abbruch, wenn der Cache nur TLS 1.2-Verbindungen akzeptiert. Korrekturen für diese Clients werden überprüft. Sehen Sie also für diese Pakete nach, ob eine aktualisierte Version mit dieser Unterstützung vorhanden ist.

In Java 8 wird standardmäßig TLS 1.2 verwendet und sollte in den meisten Fällen keine Updates Ihrer Clientkonfiguration erfordern. Um sicherzugehen, testen Sie Ihre Anwendung.

Ab Java 17 wird standardmäßig TLS 1.3 verwendet.

Node.js

Node Redis und ioredis unterstützen sowohl TLS 1.2 als auch TLS 1.3.

PHP

Versionen vor PHP 7: Predis unterstützt nur TLS 1.0. Diese Versionen funktionieren nicht mit TLS 1.2. Führen Sie ein Upgrade durch, um TLS 1.2 verwenden zu können.

PHP 7.0 bis PHP 7.2.1: Predis verwendet standardmäßig nur TLS 1.0 oder 1.1. Zur Verwendung von TLS 1.2 kann die folgende Problemumgehung verwendet werden: Geben Sie beim Erstellen der Clientinstanz TLS 1.2 an:

$redis=newPredis\Client([
    'scheme'=>'tls',
    'host'=>'host',
    'port'=>6380,
    'password'=>'password',
    'ssl'=>[
        'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
    ],
]);

PHP 7.3 und höhere Versionen: Predis verwendet die aktuelle TLS-Version.

PhpRedis

Bei PhpRedis wird TLS in keiner PHP-Version unterstützt.

Python

Bei Redis-py wird standardmäßig TLS 1.2 verwendet.

GO

Bei Redigo wird standardmäßig TLS 1.2 verwendet.