Dela via


\Ta bort TLS 1.0 och 1.1 från användning med Azure Cache for Redis

Azure Cache for Redis går mot att kräva användning av TLS 1.2 i april 2025 för att möta den branschomfattande satsningen på exklusiv användning av TLS version 1.2 eller senare. TLS-versionerna 1.0 och 1.1 är kända för att vara mottagliga för attacker som BEAST och POODLE, och för att ha andra svagheter i Common Vulnerabilities and Exposures (CVE).

TLS-versionerna 1.0 och 1.1 stöder inte heller de moderna krypteringsmetoder och chiffersviter som rekommenderas av PCI-efterlevnadsstandarder (Payment Card Industry). Den här TLS-säkerhetsbloggen förklarar några av dessa säkerhetsrisker mer detaljerat.

Viktigt!

Från och med den 1 april 2025 tillämpas TLS 1.2-kravet.

Viktigt!

TLS 1.0/1.1-innehåll i den här artikeln gäller inte för Azure Cache for Redis Enterprise/Enterprise Flash eftersom Enterprise-nivåerna endast stöder TLS 1.2 eller senare.

Som en del av det här arbetet kan du förvänta dig följande ändringar i Azure Cache for Redis:

  • Fas 1: Azure Cache for Redis slutar erbjuda TLS 1.0/1.1 som ett alternativ för inställningen MinimumTLSVersion för nya cacheminnen. Befintliga cacheinstanser uppdateras inte just nu. Du kan inte ange MinimumTLSVersion till 1.0 eller 1.1 för din befintliga cache.
  • Fas 2: Azure Cache for Redis slutar stödja TLS 1.1 och TLS 1.0 från och med 1 april 2025. Efter den här ändringen måste programmet använda TLS 1.2 eller senare för att kommunicera med din cache. Azure Cache for Redis-tjänsten är fortfarande tillgänglig medan vi uppdaterar MinimumTLSVersion för alla cacheminnen till 1.2.
Date beskrivning
September 2023 Meddelande om att TLS 1.0/1.1 upphör
1 mars 2024 Från och med 1 mars 2024 kan du inte skapa nya cacheminnen med lägsta TLS-version inställd på 1.0 eller 1.1 och du kan inte ange MinimumTLSVersion till 1.0 eller 1.1 för din befintliga cache. De minsta TLS-versionerna uppdateras inte automatiskt för befintliga cacheminnen just nu.
31 mars 2025 Kontrollera att alla dina program ansluter till Azure Cache for Redis med TLS 1.2 och lägsta TLS-version i cacheinställningarna är inställt på 1.2.
Från och med 1 april 2025 Lägsta TLS-version för alla cacheinstanser uppdateras till 1.2. Det innebär att Azure Cache for Redis-instanser avvisar anslutningar med TLS 1.0 eller 1.1 just nu.

Som en del av den här ändringen tar Azure Cache for Redis bort stöd för äldre chiffersviter som inte är säkra. Chiffersviter som stöds är begränsade till följande sviter när cachen har konfigurerats med minst TLS 1.2:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

Följande avsnitt innehåller vägledning om hur du identifierar beroenden för dessa tidigare TLS-versioner och tar bort dem från ditt program.

Kontrollera TLS-versioner som stöds av Azure Cache for Redis

Du kan kontrollera att lägsta TLS-versionsvärde är inställt på TLS 1.2 i avancerade inställningar för din cache i Azure Portal. Om det är något annat värde än TLS 1.2 kontrollerar du att du följer anvisningarna i avsnittet Konfigurera Azure Cache for Redis att använda TLS 1.2. Om värdet är TLS 1.2 och klientprogrammet kan ansluta utan fel behövs ingen åtgärd.

Du kan också använda det här PowerShell-skriptet för att verifiera den lägsta TLS-version som stöds av Azure Cache for Redis-slutpunkten. Om din Redis-instans är ett virtuellt nätverk (VNet) som matas in måste du köra det här skriptet från en virtuell dator i ditt virtuella nätverk som har åtkomst till Azure Cache for Redis-slutpunkten. Om resultatet visas Tls Enabled och/eller Tls 11 Enabledkontrollerar du att du följer anvisningarna i avsnittet Konfigurera Azure Cache for Redis att använda TLS 1.2. Om resultatet endast Tls12 Enabled visas och klientprogrammet kan ansluta utan fel behövs ingen åtgärd.

    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 $_"
            }
        }
    }

Konfigurera Azure Cache for Redis att använda TLS 1.2

Du kan konfigurera cachen med TLS 1.2 genom att ställa in Lägsta TLS-version på TLS 1.2 i Avancerade inställningar för cachen i Azure-portalen.

  1. Om du vill konfigurera cacheminnet så att det använder TLS 1.2 väljer du först Avancerade inställningar på resursmenyn i cacheminnet.

  2. Välj 1.2 i Lägsta TLS-version i arbetsfönstret. Välj sedan Spara.

Du kan också göra samma sak med PowerShell. Modulen Az.RedisCache behöver vara installerad innan du kör kommandot.

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

Om du ska ställa in TLS-versionen via CLI är --minimum-tls-version endast tillgänglig när Redis skapas, och ändring av minimum-tls-version från en befintlig Redis-instans stöds inte.

Kommentar

Tjänsten Azure Cache for Redis ska vara tillgänglig under migreringen till TLS 1.2 eller senare.

Kontrollera om klientprogrammet redan är kompatibelt

Du kan ta reda på om ditt program fungerar med TLS 1.2 genom att ange värdet för lägsta TLS-version till TLS 1.2 enligt beskrivningen tidigare, på ett test eller mellanlagringscacheminne och sedan köra tester. Om programmet fortsätter att fungera som förväntat efter den här ändringen är det förmodligen kompatibelt. Det är möjligt att du kan behöva konfigurera Redis-klientbiblioteket som används av ditt program för att specifikt aktivera TLS 1.2 för att ansluta till Azure Cache for Redis.

Konfigurera klientprogrammet att använda TLS 1.2

De flesta program använder Redis-klientbibliotek för att hantera kommunikationen med sina cacheminnen. Här följer anvisningar för hur du konfigurerar några av de populära klientbiblioteken i olika programmeringsspråk och ramverk för att använda TLS 1.2.

.NET

Redis .NET-klienter använder den tidigaste TLS-versionen som standard på .NET Framework 4.5.2 eller tidigare och använder den senaste TLS-versionen på .NET Framework 4.6 eller senare. Om du använder en äldre version av .NET Framework aktiverar du TLS 1.2 manuellt:

  • StackExchange.Redis: Ange ssl=true och sslProtocols=tls12 i anslutningssträng.
  • ServiceStack.Redis: Följ anvisningarna för ServiceStack.Redis och kräver ServiceStack.Redis v5.6 som minst.

.NET Core

Redis .NET Core-klienter använder som standard operativsystemets TLS-standardversion, som beror på operativsystemet i fråga.

Beroende på operativsystemets version och eventuella korrigeringar som har tillämpats kan den faktiska TLS-standardversionen variera. Mer information finns i Metodtips för TLS (Transport Layer Security) med .NET Framework.

Men om du använder ett gammalt operativsystem eller bara vill vara säker rekommenderar vi att du konfigurerar den önskade TLS-versionen manuellt via klienten.

Java

Redis Java-klienter använder TLS 1.0 på Java version 6 eller tidigare. Jedis, Lettuce och Redisson kan inte ansluta till Azure Cache for Redis om TLS 1.0 är inaktiverat i cacheminnet. Uppgradera ditt Java-ramverk för att använda nya TLS-versioner.

För Java 7 använder Redis-klienter inte TLS 1.2 som standard, men kan konfigureras för det. Med Jedis kan du till exempel ange de underliggande TLS-inställningarna med följande kodfragment:

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);

Klienterna Lettuce och Redisson har ännu inte stöd för att ange TLS-versionen. De bryts om cachen endast accepterar TLS 1.2-anslutningar. Korrigeringar för dessa klienter granskas, så kontrollera med dessa paket om det finns en uppdaterad version med det här stödet.

I Java 8 används TLS 1.2 som standard och bör i de flesta fall inte kräva uppdateringar av klientkonfigurationen. Testa ditt program för att vara säker.

Från och med Java 17 används TLS 1.3 som standard.

Node.js

Både Node Redis och ioredis stöder TLS 1.2 och 1.3.

PHP

Tidigare versioner än PHP 7: Predis stöder endast TLS 1.0. Dessa versioner fungerar inte med TLS 1.2. du måste uppgradera för att använda TLS 1.2.

PHP 7.0 till PHP 7.2.1: Predis använder endast TLS 1.0 eller 1.1 som standard. Du kan använda följande lösning för att använda TLS 1.2. Ange TLS 1.2 när du skapar klientinstansen:

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

PHP 7.3 och senare versioner: Predis använder den senaste TLS-versionen.

PhpRedis

PhpRedis stöder inte TLS på någon PHP-version.

Python

Redis-py använder TLS 1.2 som standard.

GO

Redigo använder TLS 1.2 som standard.