Quitar TLS 1.0 y 1.1 del uso de Azure Cache for Redis

Para satisfacer la inserción en todo el sector hacia el uso exclusivo de la versión 1.2 o posterior de Seguridad de la capa de transporte (TLS), Azure Cache for Redis avanza hacia la necesidad de usar TLS 1.2 en noviembre de 2024. Las versiones de TLS 1.0 y 1.1 son susceptibles de sufrir ataques como BEAST y POODLE, y tienen otros puntos vulnerables y exposiciones comunes (CVE).

Las versiones TLS 1.0 Y 1.1 tampoco admiten los métodos de cifrado modernos y los conjuntos de cifrado recomendados por las normas de cumplimiento del sector de las tarjetas de pago (PCI). En este blog de seguridad de TLS se explican con más detalle algunas de estas vulnerabilidades.

Importante

El 1 de noviembre de 2024, se aplicará el requisito de TLS 1.2.

Importante

El contenido de retirada de TLS 1.0/1.1 de este artículo no se aplica a Azure Cache for Redis Enterprise/Enterprise Flash, ya que los niveles Enterprise solo admiten TLS 1.2.

Como parte de este trabajo, puede esperar los siguientes cambios en Azure Cache for Redis:

  • Fase 1: Azure Cache for Redis deja de ofrecer TLS 1.0/1.1 como opción para el valor MinimumTLSVersion en las nuevas creaciones de caché. Las instancias de caché existentes no se actualizarán en este momento. Todavía puede usar Azure Portal u otras API de administración para cambiar la versión de TLS mínima a 1.0 o 1.1 para la compatibilidad con versiones anteriores.
  • Fase 2: Azure Cache for Redis deja de admitir TLS 1.1 y TLS 1.0 a partir del 1 de noviembre de 2024. Después de ese cambio, la aplicación debe usar TLS 1.2 o posterior para comunicarse con la caché. El servicio Azure Cache for Redis estará disponible mientras actualizamos MinimumTLSVerion para todas las memorias caché a 1.2.
Fecha Descripción
Septiembre de 2023 Anuncio de retirada de TLS 1.0/1.1
1 de marzo de 2024 A partir del 1 de marzo de 2024, no podrá crear nuevas cachés con la versión mínima de TLS establecida en 1.0 o 1.1, ni tampoco podrá establecer versión mínima de TLS en esos valores para la caché existente. La versión mínima de TLS no se actualizará automáticamente para las cachés existentes en este momento.
31 de octubre de 2024 Asegúrese de que todas las aplicaciones se conectan a Azure Cache for Redis mediante TLS 1.2 y la versión mínima de TLS en la configuración de caché está establecida en 1.2.
1 de noviembre de 2024 La versión mínima de TLS para todas las instancias de caché se actualiza a la versión 1.2. Esto significa que las instancias de Azure Cache for Redis rechazarán las conexiones mediante TLS 1.0 o 1.1.

Importante

El contenido de este artículo no se aplica a Azure Cache for Redis Enterprise/Enterprise Flash, ya que los niveles Enterprise solo admiten TLS 1.2.

Como parte de este cambio, Azure Cache for Redis elimina la compatibilidad con conjuntos de cifrado anteriores que no son seguros. Los conjuntos de cifrado compatibles están restringidos a los siguientes cuando la caché está configurada con TLS 1.2 como mínimo:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

En las siguientes secciones se proporcionan instrucciones generales sobre cómo detectar dependencias en estas versiones anteriores de TLS y cómo quitarlas de la aplicación.

Compruebe si la aplicación ya es compatible

Para averiguar si la aplicación funciona con TLS1.2, puede establecer el valor de Versión de TLS mínima en TLS 1.2 en una caché de pruebas o ensayo y, luego, realizar la prueba. La configuración de la versión mínima de TLS está en la Configuración avanzada de la instancia de caché en Azure Portal. Si la aplicación sigue funcionando según lo previsto después de este cambio, la aplicación usa TLS 1.2 o posterior.

Nota:

Con la memoria caché abierta en el portal, seleccione Opciones avanzadas en el menú de recursos. Si la versión mínima de TLS de la instancia de caché está establecida en Valor predeterminado, la versión mínima de TLS se establece en TLS 1.2. TLS 1.2 es el valor predeterminado que se asigna a la instancia de caché cuando no se elige ningún valor explícito.

Configuración de la aplicación para usar TLS 1.2 o posterior

La mayoría de las aplicaciones usan bibliotecas de cliente de Redis para controlar la comunicación con sus cachés. A continuación se proporcionan instrucciones para configurar algunas de las bibliotecas de cliente más populares, en diversos marcos y lenguajes de programación, para usar TLS 1.2 o posterior.

.NET

Los clientes .NET de Redis usan la versión de TLS más antigua de forma predeterminada en .NET Framework 4.5.2 o versiones anteriores, y usan la versión más reciente de TLS en .NET Framework 4.6 o posterior. Si utiliza una versión anterior de .NET Framework, puede habilitar TLS 1.2 de forma manual:

  • StackExchange.Redis: Establezca ssl=true y sslProtocols=tls12 en la cadena de conexión.
  • ServiceStack.Redis: siga las instrucciones de ServiceStack.Redis y requiere ServiceStack.Redis v5.6, como mínimo.

.NET Core

Los clientes de .NET Core de Redis usan por defecto la versión de TLS predeterminada del sistema operativo, que depende del propio sistema operativo.

En función de la versión del sistema operativo y de las revisiones que se hayan aplicado, la versión de TLS predeterminada que se use puede variar. Para obtener más información, vea Procedimientos recomendados sobre la seguridad de la capa de transporte (TLS) con .NET Framework.

Sin embargo, si usa un sistema operativo antiguo o simplemente quiere asegurarse, se recomienda configurar manualmente la versión de TLS preferida mediante el cliente.

Java

Los clientes de Java de Redis usan TLS 1.0, versión 6 o anterior de Java. Jedis, Lettuce y Redisson no se pueden conectar a Azure Cache for Redis si TLS 1.0 está deshabilitado en la memoria caché. Actualice el marco de Java para usar las nuevas versiones de TLS.

En Java 7, los clientes de Redis no usan TLS 1.2 de forma predeterminada, pero se pueden configurar para ello. Por ejemplo, Jedis permite especificar la configuración de TLS subyacente con el siguiente fragmento de código:

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

Los clientes de Lettuce y Redisson todavía no admiten la especificación de la versión de TLS. Se interrumpirán si la memoria caché acepta solo conexiones de TLS 1.2. Se están revisando las correcciones de estos clientes, por lo que debe comprobar si hay una versión actualizada para esos paquetes con esta compatibilidad.

En Java 8, se usa TLS 1.2 de forma predeterminada y no es necesario actualizar la configuración del cliente en la mayoría de los casos. Para estar más seguro, pruebe la aplicación.

A partir de Java 17, TLS 1.3 se usa de forma predeterminada.

Node.js

Node Redis e ioredis admiten TLS 1.2 y 1.3.

PHP

  • Versiones anteriores a PHP 7: Predis solo admite TLS 1.0. Estas versiones no funcionan con TLS 1.2; debe actualizar para usar TLS 1.2.

  • PHP 7.0 a PHP 7.2.1: Predis solo usa TLS 1.0 o 1.1 de forma predeterminada. Puede usar la siguiente solución alternativa para usar TLS 1.2. Puede especificar TLS 1.2 al crear la instancia de cliente:

    $redis=newPredis\Client([
        'scheme'=>'tls',
        'host'=>'host',
        'port'=>6380,
        'password'=>'password',
        'ssl'=>[
            'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
        ],
    ]);
    
  • PHP 7.3 y versiones posteriores: Predis usa la versión más reciente de TLS.

PhpRedis

PhpRedis no admite TLS en ninguna versión de PHP.

Python

Redis-py usa TLS 1.2 de forma predeterminada.

GO

Redigo usa TLS 1.2 de forma predeterminada.

Información adicional