Partager via


Supprimer les protocoles TLS 1.0 et 1.1 de l’utilisation avec Azure Cache pour Redis

Pour répondre à la poussée à l’échelle du secteur vers l’utilisation exclusive de TLS (Transport Layer Security) version 1.2 ou ultérieure, Azure Cache pour Redis s’oriente vers l’utilisation de TLS 1.2 en avril 2025. Les versions TLS 1.0 et 1.1 sont connues pour être sujettes à des attaques telles que BEAST et POODLE, et pour avoir d’autres failles et menaces courantes (CVE).

Les versions TLS 1.0 et 1.1 ne prennent pas non plus en charge les méthodes de chiffrement modernes et les suites de chiffrement recommandées par les normes de conformité PCI. Ce blog sur la sécurité de TLS explique plus en détail certaines de ces vulnérabilités.

Important

À partir du 1er avril 2025, l’exigence TLS 1.2 sera appliquée.

Important

Le contenu de cet article relatif à la mise hors service de TLS 1.0/1.1 ne s’applique pas à Azure Cache pour Redis Enterprise ou Enterprise Flash, car les niveaux Enterprise prennent uniquement en charge TLS 1.2 ou version plus récente.

Dans le cadre de cet effort, vous pouvez vous attendre aux modifications suivantes dans Azure Cache pour Redis :

  • Phase 1 : Azure Cache pour Redis cesse d’offrir TLS 1.0 ou 1.1 comme option pour le paramètre MinimumTLSVersion pour les nouvelles créations de cache. Les instances de cache existantes ne seront pas mises à jour à ce stade. Vous ne pouvez pas définir la MinimumTLSVersion sur 1.0 ou 1.1 pour votre cache existant.
  • Phase 2 : Azure Cache pour Redis cesse de prendre en charge TLS 1.1 et TLS 1.0 à compter du 1er mars 2025. Après cette modification, votre application devra utiliser TLS 1.2 ou une version ultérieure pour communiquer avec votre cache. Le service Azure Cache pour Redis reste disponible pendant que nous mettons à jour la MinimumTLSVersion de tous les caches vers la version 1.2.
Date Description
September 2023 Annonce de suppression de TLS 1.0 et 1.1
1er mars 2024 À compter du 1er mars 2024, vous ne pouvez pas créer de caches avec la version TLS minimale définie sur 1.0 ou 1.1 et vous ne pouvez pas définir le MinimumTLSVersion sur 1.0 ou 1.1 pour votre cache existant. La version TLS minimale n’est pas mise à jour automatiquement pour les caches existants à ce stade.
lundi 31 mars 2025 Vérifiez que toutes vos applications se connectent à Azure Cache pour Redis à l’aide de TLS 1.2 et que la version TLS minimale sur vos paramètres de cache est définie sur 1.2.
À compter du 1er avril 2025 La version TLS minimale pour toutes les instances de cache est mise à jour vers la version 1.2. Cela signifie qu’Azure Cache pour Redis rejette les connexions à l’aide de TLS 1.0 ou 1.1 à ce stade.

Dans le cadre de cette modification, Azure Cache pour Redis supprime la prise en charge des anciennes suites de chiffrement qui ne sont pas sécurisées. Les suites de chiffrement prises en charge sont limitées aux suites suivantes lorsque le cache est au minimum configuré avec TLS 1.2 :

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

Les sections suivantes fournissent des instructions sur la façon de détecter les dépendances sur ces versions antérieures de TLS et de les supprimer de votre application.

Vérifier les versions TLS prises en charge par votre version d’Azure Cache pour Redis

Vous pouvez vérifier que la valeur minimale de la version TLS est définie sur TLS 1.2 dans les paramètres avancés de votre cache dans le portail Azure. S’il s’agit d’une valeur autre que TLS 1.2, vérifiez que vous suivez les instructions pour configurer votre cache Azure pour Redis afin d’utiliser TLS 1.2. Si la valeur est TLS 1.2, et que votre application cliente est en mesure de se connecter sans erreur, aucune action n’est nécessaire.

Vous pouvez également utiliser ce script PowerShell pour vérifier les versions minimale de TLS prises en charge par votre point de terminaison Azure Cache pour Redis. Si votre instance Redis est injectée sur un réseau virtuel, vous devez exécuter ce script à partir d’une machine virtuelle dans votre réseau virtuel qui a accès au point de terminaison Azure Cache pour Redis. Si le résultat affiché est Tls Enabled et/ou Tls 11 Enabled, assurez-vous alors de suivre les instructions pour Configurer votre instance Azure Cache pour Redis afin d’utiliser TLS 1.2. Si le résultat affiché est uniquement Tls12 Enabled et que votre application cliente est en mesure de se connecter sans erreur, aucune action n’est nécessaire.

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

Configurez votre Azure Cache pour Redis pour utiliser TLS 1.2.

Vous pouvez configurer TLS 1.2 sur le cache en définissant la valeur Version minimale de TLS sur TLS 1.2 dans les Paramètres avancés de votre cache dans le portail Azure.

  1. Pour configurer votre cache pour utiliser TLS 1.2, sélectionnez d’abord Paramètres avancés dans le menu Ressource de votre cache.

  2. Sélectionnez 1.2 dans Version minimale de TLS dans le volet de travail. Ensuite, cliquez sur Enregistrer.

Capture d’écran montrant l’option Définir TLS 1.2 pour le cache sur le Portail Azure

Vous pouvez également effectuer la même configuration en utilisant PowerShell. Vous devez avoir le module Az.RedisCache déjà installé avant d’exécuter la commande.

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

Pour définir la version TLS via CLI, la --minimum-tls-version n’est disponible qu’au moment de la création de Redis et il n’est pas possible de la changerminimum-tls-version sur une instance Redis existante.

Remarque

Le service Azure Cache pour Redis doit être disponible pendant la migration TLS 1.2 ou version ultérieure.

Vérifier si votre application cliente est déjà conforme

Vous pouvez déterminer si votre application fonctionne avec TLS 1.2 en définissant le paramètre Version TLS minimale sur TLS 1.2, comme expliqué plus tôt, sur un cache de test ou intermédiaire, puis en effectuant des tests. Si l’application continue à fonctionner comme prévu après cette modification, elle est probablement conforme. Vous devrez peut-être configurer la bibliothèque de client Redis que votre application utilise pour activer spécifiquement TLS 1.2 afin de vous connecter à Azure Cache pour Redis.

Configurez votre application cliente pour utiliser TLS 1.2

La plupart des applications utilisent des bibliothèques clientes Redis pour gérer la communication avec leurs caches. Voici des instructions pour configurer certaines des bibliothèques clientes populaires, dans différents langages de programmation et infrastructures, afin qu’elles utilisent TLS 1.2.

.NET

Les clients .NET Redis utilisent la version TLS la plus ancienne par défaut sur .NET Framework 4.5.2 ou version antérieure, et la dernière version de TLS sur .NET Framework 4.6 ou version ultérieure. Si vous utilisez une version antérieure de .NET Framework, activez TLS 1.2 manuellement :

  • StackExchange.Redis : Définissez ssl=true et sslProtocols=tls12 dans la chaîne de connexion.
  • ServiceStack.Redis : Suivez les instructions ServiceStack.Redis avec ServiceStack.Redis v5.6 au minimum.

.NET Core

Les clients .NET Core Redis utilisent par défaut la version TLS du système d'exploitation, qui dépend du système d'exploitation lui-même.

Selon la version du système d’exploitation et les correctifs appliqués, la version TLS par défaut effective peut varier. Pour plus d’informations, consultez Bonnes pratiques du protocole TLS (Transport Layer Security) avec .NET Framework.

Toutefois, si vous utilisez un ancien système d'exploitation ou souhaitez simplement être rassuré, nous vous recommandons de configurer manuellement la version du protocole TLS de votre choix via le client.

Java

Les clients Java Redis utilisent TLS 1.0 sur Java version 6 ou antérieure. Jedis, Lettuce et Redisson ne peuvent pas se connecter à Azure Cache for Redis si TLS 1.0 est désactivé sur le cache. Mettez à niveau votre infrastructure Java pour utiliser les nouvelles versions du protocole TLS.

Pour Java 7, les clients Redis n’utilisent pas TLS 1.2 par défaut, mais peuvent être configurés pour cela. Par exemple, Jedis vous permet de spécifier les paramètres TLS sous-jacents avec l’extrait de code suivant :

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

Les clients Lettuce et Redisson ne prenant pas encore en charge la spécification de la version de TLS. Ils s’interrompent si le cache accepte uniquement les connexions TLS 1.2. Les correctifs pour ces clients étant en cours de révision, vérifiez auprès de ces packages qu’une version mise à jour est prise en charge.

Dans Java 8, TLS 1.2 est utilisé par défaut et ne doit pas nécessiter de mise à jour de la configuration de votre client dans la plupart des cas. Par précaution, testez votre application.

À compter de Java 17, TLS 1.3 est utilisé par défaut.

Node.js

Node Redis et ioredis prennent tous deux en charge TLS 1.2 et 1.3.

PHP

Versions antérieures à PHP 7 : Predis prend uniquement en charge TLS 1.0. Ces versions ne fonctionnent pas avec TLS 1.2 ; vous devez effectuer la mise à niveau pour utiliser TLS 1.2.

PHP 7.0 à PHP 7.2.1 : Predis utilise uniquement TLS 1.0 ou 1.1 par défaut. Vous pouvez utiliser la solution de contournement suivante pour utiliser TLS 1.2. Spécifiez TLS 1.2 quand vous créez l’instance cliente :

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

PHP 7.3 et versions ultérieures : Predis utilise la toute dernière version de TLS.

PhpRedis

PhpRedis ne prend en charge TLS sur aucune version de PHP.

Python

Redims-py utilise TLS 1.2 par défaut.

GO

Redigo utilise TLS 1.2 par défaut.