Remover o TLS 1.0 e 1.1 do uso com o Cache do Azure para Redis

Para atender à tendência de todo o setor em direção ao uso exclusivo do protocolo TLS versão 1.2 ou posterior, o Cache do Azure para Redis passará a exigir o uso do TLS 1.2 em novembro de 2024. As versões 1.0 e 1.1 do TLS são conhecidas como suscetíveis a ataques como BEAST e POODLE e têm pontos fracos de CVE (vulnerabilidades e exposições comuns).

As versões 1.0 e 1.1 do TLS também não dão suporte aos métodos de criptografia modernos e conjuntos de codificação recomendados pelos padrões de conformidade do PCI (setor de cartões de pagamento). Este blog de segurança do TLS explica algumas dessas vulnerabilidades mais detalhadamente.

Importante

Em 1º de novembro de 2024, será imposto o requisito TLS 1.2.

Importante

O conteúdo de desativação do TLS 1.0/1.1 neste artigo não se aplica ao Cache do Azure para Redis Enterprise/Enterprise Flash, pois as camadas Enterprise dão suporte apenas ao TLS 1.0/1.2.

Como parte desse esforço, são esperadas as seguintes alterações no Cache do Azure para Redis:

  • Fase 1: o Cache do Azure para Redis deixará de oferecer o TLS 1.0/1.1 como uma opção para a configuração MinimumTLSVersion para criações de cache. As instâncias de cache existentes não serão atualizadas por enquanto. Você ainda pode usar o portal do Azure ou outras APIs de gerenciamento para alterar a versão mínima do TLS para 1.0 ou 1.1 para compatibilidade com versões anteriores.
  • Fase 2: o Cache do Azure para Redis deixará de dar suporte ao TLS 1.1 e ao TLS 1.0 a partir de 1º de novembro de 2024. Após essa alteração, seu aplicativo deverá usar o TLS 1.2 ou posterior para se comunicar com o cache. O serviço Cache do Azure para Redis estará disponível enquanto atualizamos o MinimumTLSVersion de todos os caches para 1.2.
Data Descrição
Setembro de 2023 Comunicado de desativação do TLS 1.0/1.1
1º de março de 2024 A partir de 1º de março de 2024, você não poderá definir a versão mínima do TLS para qualquer cache como 1.0 ou 1.1. As instâncias de cache existentes não serão atualizadas por enquanto.
31 de outubro de 2024 Verifique se todos os seus aplicativos estão se conectando ao Cache do Azure para Redis usando o TLS 1.2 e a versão mínima do TLS em suas configurações de cache está definida como 1.2
1 de novembro de 2024 A versão mínima do TLS para todas as instâncias de cache é atualizada para 1.2. Isso significa que as instâncias do Cache do Azure para Redis rejeitarão conexões usando o TLS 1.0 ou 1.1.

Importante

O conteúdo neste artigo não se aplica ao Cache do Azure para Redis Enterprise/Enterprise Flash, pois as camadas Enterprise dão suporte apenas ao TLS 1.2.

Como parte dessa alteração, o Cache do Azure para Redis remove o suporte para conjuntos de criptografia mais antigos que não são seguros. O pacotes de criptografia compatíveis são restritos aos conjuntos a seguir quando o cache for configurado com um TLS 1.2, no mínimo:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

As seções a seguir fornecem diretrizes sobre como detectar dependências dessas versões anteriores do TLS e removê-las do seu aplicativo.

Verificar se o seu aplicativo já está em conformidade

Você pode descobrir se seu aplicativo funciona com o TLS 1.2 definindo o valor da versão mínima do TLS como TLS 1.2 em um cache de teste ou de preparo e executando testes. A configuração Versão mínima do TLS está nas Configurações avançadas da instância de cache no portal do Azure. Se o aplicativo continuar funcionando conforme o esperado após essa alteração, seu aplicativo estará usando o TLS 1.2 ou mais recente.

Observação

Com o cache aberto no portal, selecione Avançado no menu de recursos. Caso a versão mínima do TLS para sua instância de cache esteja definida como Padrão, sua versão mínima do TLS será definida como TLS 1.2. O TLS 1.2 é o valor padrão atribuído à instância de cache quando nenhum valor explícito é escolhido.

Configurar seu aplicativo para usar o TLS 1.2 ou posterior

A maioria dos aplicativos, para lidar com a comunicação com os respectivos caches, usa bibliotecas de clientes do Redis. Aqui estão as instruções para configurar algumas das bibliotecas de clientes populares, em várias linguagens de programação e estruturas, para usar o TLS 1.2 ou posterior.

.NET

Os clientes do .NET do Redis usam a versão mais antiga do TLS por padrão no .NET Framework 4.5.2 ou anterior e usam a versão mais recente do TLS no .NET Framework 4.6 ou posterior. Se estiver usando uma versão mais antiga do .NET Framework, habilite o TLS 1.2 manualmente:

  • StackExchange.Redis: Defina ssl=true e sslProtocols=tls12 na cadeia de conexão.
  • ServiceStack.Redis: Siga as instruções de ServiceStack.Redis e exija a versão 5.6 ou posterior do ServiceStack.Redis.

.NET Core

Os clientes Redis .NET Core assumem como padrão a versão TLS padrão do sistema operacional que depende do sistema operacional propriamente dito.

Dependendo da versão do SO e de todos os patches que foram aplicados, a versão efetiva padrão do TLS pode variar. Para mais informações, confira Melhores práticas do protocolo TLS com o .NET Framework.

No entanto, se estiver usando um SO antigo ou apenas deseja ter certeza, recomendamos configurar a versão do TLS preferencial manualmente por meio do cliente.

Java

Os clientes do Java do Redis usam o TLS 1.0 na versão 6 ou anterior do Java. Jedis, Lettuce e Redisson não poderão se conectar ao Cache do Azure para Redis se o TLS 1.0 estiver desabilitado no cache. Atualize sua estrutura Java para usar novas versões do TLS.

Para o Java 7, os clientes Redis não usam o TLS 1.2 por padrão, mas podem ser configurados para ele. Por exemplo, o Jedis permite que você especifique as configurações de TLS subjacentes com o seguinte snippet 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);

Os clientes Lettuce e Redisson ainda não dão suporte especificando a versão do TLS. Eles são interrompidos se o cache aceitar apenas conexões TLS 1.2. As correções para esses clientes estão sendo examinadas, portanto, verifique com esses pacotes uma versão atualizada que tenha esse suporte.

No Java 8, o TLS 1.2 é usado por padrão e não deve exigir atualizações para a configuração do cliente na maioria dos casos. Para maior segurança, teste seu aplicativo.

A partir do Java 17, o TLS 1.3 é usado por padrão.

Node.js

O Node Redis e o ioredis dão suporte ao TLS 1.2 e 1.3.

PHP

  • Versões anteriores ao PHP 7: O Predis dá suporte apenas ao TLS 1.0. Essas versões não funcionam com o TLS 1.2, exigindo atualização para que seja possível usá-lo.

  • PHP 7.0 a PHP 7.2.1: O Predis usa apenas o TLS 1.0 ou 1.1 por padrão. Você pode usar a solução alternativa a seguir para usar o TLS 1.2. Especifique o TLS 1.2 ao criar a instância do cliente:

    $redis=newPredis\Client([
        'scheme'=>'tls',
        'host'=>'host',
        'port'=>6380,
        'password'=>'password',
        'ssl'=>[
            'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
        ],
    ]);
    
  • PHP 7.3 e versões posteriores: O Predis usa a versão mais recente do TLS.

PhpRedis

O PhpRedis não é compatível com TLS em nenhuma versão do PHP.

Python

O Redis-py usa o TLS 1.2 por padrão.

GO

O Redigo usa o TLS 1.2 por padrão.

Informações adicionais