Rimuovere TLS 1.0 and 1.1 per l'uso con cache di Azure per Redis

Per soddisfare il push a livello di settore verso l'uso esclusivo di Transport Layer Security (TLS) versione 1.2 o successiva, Cache Redis di Azure sta per richiedere l'uso di TLS 1.2 nel novembre 2024. Le versioni TLS 1.0 e 1.1 sono notoriamente esposte ad attacchi come BEAST e POODLE e presentano punti deboli relativi a vulnerabilità ed esposizioni comuni (CVE).

Le versioni 1.0 e 1.1 di TLS non supportano i metodi e i pacchetti di crittografia moderni consigliati dagli standard di conformità PCI (Payment Card Industry). Questo blog sulla sicurezza TLS illustra alcune di queste vulnerabilità in modo più dettagliato.

Importante

Il 1° novembre 2024 verrà applicato il requisito TLS 1.2.

Importante

Il contenuto del ritiro TLS 1.0/1.1 in questo articolo non si applica a Cache Redis di Azure per Redis Enterprise/Enterprise Flash perché i livelli Enterprise supportano solo TLS 1.2.

Come parte di questo sforzo, è possibile prevedere le modifiche seguenti in Cache Redis di Azure:

  • Fase 1: Cache Redis di Azure smette di offrire TLS 1.0/1.1 come opzione per l'impostazione MinimumTLSVersion per la creazione di nuove cache. A questo punto le istanze della cache esistenti non verranno aggiornate. Non è possibile impostare MinimumTLSVersion su 1.0 o 1.1 per la cache esistente.
  • Fase 2: Cache Redis di Azure smette di supportare TLS 1.1 e TLS 1.0 a partire dal 1° novembre 2024. Dopo questa modifica, l'applicazione deve usare TLS 1.2 o una versione successiva per comunicare con la cache. Il servizio Cache Redis di Azure rimane disponibile mentre si aggiorna MinimumTLSVerion per tutte le cache a 1.2.
Data Descrizione
Settembre 2023 Annuncio sul ritiro di TLS 1.0/1.1
1° marzo 2024 A partire dal 1° marzo 2024, non è possibile creare nuove cache con la versione minima di TLS impostata su 1.0 o 1.1 e non è possibile impostare MinimumTLSVersion su 1.0 o 1.1 per la cache esistente. La versione minima di TLS non verrà aggiornata automaticamente per le cache esistenti a questo punto.
31 ottobre 2024 Assicurarsi che tutte le applicazioni si connettano a Cache Redis di Azure usando TLS 1.2 e la versione minima di TLS nelle impostazioni della cache sia impostata su 1.2.
1° novembre 2024 La versione minima di TLS per tutte le istanze della cache viene aggiornata alla versione 1.2. Ciò significa che le istanze di Cache Redis di Azure rifiutano le connessioni usando TLS 1.0 o 1.1 a questo punto.

Importante

Il contenuto di questo articolo non si applica a Cache di Azure per Redis Enterprise/Enterprise Flash perché i livelli Enterprise supportano solo TLS 1.2.

Come parte di questa modifica, Cache Redis di Azure rimuove il supporto per le suite di crittografia meno recenti che non sono sicure. I pacchetti di crittografia supportati sono limitati alle suite seguenti quando la cache è configurata con almeno TLS 1.2:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

Le azioni seguenti offrono indicazioni generali su come rilevare le dipendenze da queste versioni precedenti di TLS e rimuoverle dall'applicazione.

Verificare se l'applicazione è già conforme

È possibile scoprire se l'applicazione funziona con TLS 1.2 impostando il valore versione minima di TLS su TLS 1.2 in una cache di test o di staging, quindi eseguendo i test. L'impostazione Versione minima TLS si trova nelle Impostazioni avanzate dell'istanza della cache nel portale di Azure. Se l'applicazione continua a funzionare come previsto dopo questa modifica, l'app usa TLS 1.2 o versione successiva.

Nota

Con la cache aperta nel portale, selezionare Avanzate nel menu delle risorse. Se la versione minima di TLS per l'istanza della cache è impostata su Predefinita, la versione minima di TLS è impostata su TLS 1.2. TLS 1.2 è il valore predefinito assegnato all'istanza della cache quando non viene scelto alcun valore esplicito.

Configurare l'applicazione per l'uso di TLS 1.2 o versione successiva

La maggior parte delle applicazioni usa le librerie client Redis per gestire la comunicazione con le cache. Di seguito sono riportate le istruzioni per configurare alcune delle librerie client più diffuse, in diversi linguaggi di programmazione e framework, per l'uso di TLS 1.2 o versione successiva.

.NET

Per impostazione predefinita, i client .NET Redis usano la versione più recente di TLS in .NET Framework 4.5.2 o versioni precedenti e la versione più recente di TLS in .NET Framework 4.6 o versioni successive. Se si usa una versione precedente di .NET Framework, abilitare TLS 1.2 manualmente:

  • StackExchange.Redis: impostare ssl=true e sslProtocols=tls12 nella stringa di connessione.
  • ServiceStack.Redis: seguire le istruzioni ServiceStack.Redis e richiedere almeno la versione 5.6 di ServiceStack.Redis.

.NET Core

Per impostazione predefinita, i client .NET Core Redis usano la versione di TLS predefinita del sistema operativo che dipende da quest'ultimo.

A seconda della versione del sistema operativo e delle patch applicate, la versione TLS predefinita effettiva può variare. Per altre informazioni, vedere Procedure consigliate per Transport Layer Security (TLS) con .NET Framework.

Tuttavia, se si usa un sistema operativo precedente o si vuole essere sicuri, è consigliabile configurare manualmente la versione di TLS preferita tramite il client.

Java

I client Java per Redis usano TLS 1.0 nella versione 6 di Java o precedente. Jedis, Lettuce e Redisson non possono connettersi alla cache di Azure per Redis se TLS 1.0 è disabilitato nella cache. Aggiornare il framework Java per usare le nuove versioni di TLS.

In Java 7, i client Redis non usano TLS 1.2 per impostazione predefinita ma possono essere configurati appositamente. Ah esempio, Jedis consente di specificare le impostazioni TLS sottostanti con il frammento di codice seguente:

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

I client Lettuce e Redisson non supportano ancora la specifica della versione TLS. Si interrompono se la cache accetta solo connessioni TLS 1.2. Le correzioni per questi client sono in fase di revisione, quindi si consiglia di verificare se esiste una versione aggiornata con questo supporto.

In Java 8, per impostazione predefinita viene usato TLS 1.2 e nella maggior parte dei casi non è necessario aggiornare la configurazione client. Per sicurezza, eseguire il test dell'applicazione.

A partire da Java 17, TLS 1.3 viene usato per impostazione predefinita.

Node.js

Node Redis e ioredis supportano sia TLS 1.2 che 1.3.

PHP

  • Versioni precedenti a PHP 7: Predis supporta solo TLS 1.0. Queste versioni non funzionano con TLS 1.2, quindi è necessario eseguire l'aggiornamento.

  • PHP da 7.0 a PHP 7.2.1: Predis usa solo TLS 1.0 o 1.1 per impostazione predefinita. Per usare TLS 1.2 è possibile sfruttare la soluzione alternativa seguente. Specificare TLS 1.2 quando si crea l'istanza del client:

    $redis=newPredis\Client([
        'scheme'=>'tls',
        'host'=>'host',
        'port'=>6380,
        'password'=>'password',
        'ssl'=>[
            'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
        ],
    ]);
    
  • PHP 7.3 e versioni successive: Predis usa la versione più recente di TLS.

PhpRedis

PhpRedis non supporta TLS su nessuna versione PHP.

Python

Redis-py usa TLS 1.2 per impostazione predefinita.

GO

Redigo usa TLS 1.2 per impostazione predefinita.

Informazioni aggiuntive