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 março 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 março de 2025, 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 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 será atualizada automaticamente para caches existentes nesse momento. |
31 de outubro de 2024 | 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 março 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 conexões usando o TLS 1.0 ou 1.1 neste momento. |
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.
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
esslProtocols=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.