Compartilhar via


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

Para ir de encontro à tendência de todo o setor em usar exclusivamente o protocolo TLS de versão 1.2 ou posterior, o Cache do Azure para Redis passará a exigir o uso do TLS 1.2 em abril de 2025. 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

A partir de 1º de abril de 2025, o requisito do TLS 1.2 será imposto.

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 ou mais recente.

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 novas criações de cache. As instâncias de cache existentes não serão atualizadas por enquanto. Não é possível definir MinimumTLSVersion como 1.0 ou 1.1 para seu cache existente.
  • 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 março de 2025. 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 permanece 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 Desde 1º de março de 2024, não é possível criar novos caches com a versão mínima do TLS definida como 1.0 ou 1.1 e não é possível definir MinimumTLSVersion como 1.0 ou 1.1 para o cache existente. A versão mínima do TLS não é atualizada automaticamente para os caches existentes nesse momento.
segunda-feira, 31 de março de 2025 Verifique se todos os aplicativos estão se conectando ao Cache do Azure para Redis usando o TLS 1.2 e se a versão mínima do TLS em suas configurações de cache está definida como 1.2.
A partir de 1º de abril de 2025 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 as conexões que usam o TLS 1.0 ou 1.1 nesse momento.

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 as versões do TLS compatíveis com o Cache do Azure para Redis

Você pode verificar se o valor da versão mínima do TLS está definido como TLS 1.2 nas Configurações avançadas do seu cache no portal do Azure. Se o valor for diferente do TLS 1.2, siga as instruções para Configurar seu Cache do Azure para Redis para usar o TLS 1.2. Se o valor for TLS 1.2 e seu aplicativo cliente conseguir se conectar sem erros, nenhuma ação será necessária.

Você também pode usar este script do PowerShell para verificar a versão mínima do TLS compatível com o ponto de extremidade do Cache do Azure para Redis. Se sua instância do Redis for injetada em uma rede virtual (VNet), você precisará executar este script em uma máquina virtual na sua VNet que tenha acesso ao ponto de extremidade do Cache do Azure para Redis. Se o resultado mostrar Tls Enabled e/ou Tls 11 Enabled, siga as instruções para Configurar seu Cache do Azure para Redis para usar o TLS 1.2. Se o resultado for exibido somente Tls12 Enabled e o aplicativo cliente puder se conectar sem erros, nenhuma ação será necessária.

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

Configurar seu Cache do Azure para Redis para usar o TLS 1.2.

Você pode configurar o TLS 1.2 no cache definindo o valor de Versão mínima do TLS como TLS 1.2 nas Configurações avançadas do cache no portal do Azure.

  1. Para configurar o cache para usar o TLS 1.2, primeiro selecione Configurações avançadas no menu Recurso do seu cache.

  2. Selecione 1.2 na Versão mínima do TLS no painel de trabalho. Em seguida, selecione Salvar.

Captura de tela mostrando Configurar o TLS 1.2 para cache no portal do Azure

Também é possível fazer isso usando o PowerShell. É necessário ter o módulo Az.RedisCache já instalado antes de executar o comando.

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

Para definir a versão do TLS por meio da CLI, o --minimum-tls-version está disponível somente no momento da criação do Redis e não há suporte para a alteração minimum-tls-version em uma instância existente do Redis.

Observação

O serviço de Cache do Azure para Redis deve estar disponível durante a migração para o TLS 1.2 ou posterior.

Verifique se o aplicativo cliente já está em conformidade

Você pode descobrir se seu aplicativo funciona com o TLS 1.2 definindo o valor Versão mínima do TLS como TLS 1.2, conforme explicado anteriormente, em um cache de teste ou de preparo e, em seguida, executando os testes. Se o aplicativo continuar funcionando conforme o esperado após essa alteração, provavelmente ele está em conformidade. É possível que você precise configurar a biblioteca de clientes do Redis usada pelo aplicativo para habilitar especificamente o TLS 1.2 para se conectar ao Cache do Azure para Redis.

Configurar seu aplicativo cliente para usar o TLS 1.2

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.

.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 dos patches que foram aplicados, a versão padrão do TLS efetiva 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.