Удаление поддержки TLS 1.0 и 1.1 при работе с Кэшем Azure для Redis

Чтобы удовлетворить отраслевые толчок к эксклюзивному использованию tls версии 1.2 или более поздней, Кэш Azure для Redis движется к использованию TLS 1.2 в ноябре 2024 года. Известно, что протоколы TLS версий 1.0 и 1.1 подвержены атакам, таким как BEAST и POODLE, и имеют другие общеизвестные уязвимости (CVE).

Tls версии 1.0 и 1.1 также не поддерживают современные методы шифрования и наборы шифров, рекомендуемые стандартами соответствия платной картой (PCI). В блоге по безопасности TLS подробно рассматриваются некоторые из этих уязвимостей.

Внимание

1 ноября 2024 г. требование TLS 1.2 будет применено.

Внимание

Содержимое TLS 1.0/1.1 в этой статье не применяется к Кэш Azure для Redis Enterprise/Enterprise Flash, так как уровни Enterprise поддерживают только TLS 1.2.

В рамках этих усилий можно ожидать, что следующие изменения Кэш Azure для Redis:

  • Этап 1. Кэш Azure для Redis останавливает предложение TLS 1.0/1.1 в качестве параметра MinimumTLSVersion для создания нового кэша. На этом этапе существующие экземпляры кэша затронуты не будут. Вы по-прежнему можете использовать портал Azure или другие API управления, чтобы изменять минимальную версию TLS на 1.0 или 1.1 для обеспечения обратной совместимости.
  • Этап 2. Кэш Azure для Redis останавливает поддержку TLS 1.1 и TLS 1.0 с 1 ноября 2024 г. После этого изменения приложение для взаимодействия с кэшем должно будет использовать TLS 1.2 или более поздней версии. Служба Кэш Azure для Redis будет доступна при обновлении MinimumTLSVerion для всех кэшей до версии 1.2.
Дата Description
Сентябрь 2023 Объявление о выходе tls 1.0/1.1
1 марта 2024 г. Начиная с 1 марта 2024 г., вы не сможете создавать новые кэши с минимальной версией TLS, установленной на 1.0 или 1.1, и вы не сможете задать для существующего кэша версию TLS Minimium 1.0 или 1.1. Минимальная версия TLS не будет обновляться автоматически для существующих кэшей на данный момент.
31 октября 2024 г. Убедитесь, что все приложения подключаются к Кэш Azure для Redis с помощью TLS 1.2 и минимальной версии TLS в параметрах кэша установлено значение 1.2.
1 ноября 2024 г. Минимальная версия TLS для всех экземпляров кэша обновляется до версии 1.2. Это означает, что Кэш Azure для Redis экземпляры будут отклонять подключения с помощью TLS 1.0 или 1.1.

Внимание

Содержимое этой статьи не относится к Кэш Azure для Redis Enterprise/Enterprise Flash, так как уровни Enterprise поддерживают только TLS 1.2.

В рамках этого изменения Кэш Azure для Redis удаляет поддержку старых наборов шифров, которые не защищены. Поддерживаемые наборы шифров ограничены следующими наборами, если кэш настроен как минимум с TLS 1.2:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

В следующих разделах содержатся рекомендации по обнаружению зависимостей от этих предыдущих версий TLS и их удалении из приложения.

Проверка приложений на соответствие требованиям

Вы можете узнать, работает ли ваше приложение с TLS 1.2, установив для параметра Минимальная версия TLS значение "TLS 1.2" в тестовом или промежуточном кэше и выполнив тесты. Параметр Минимальная версия TLS находится в дополнительных параметрах экземпляра кэша на портале Azure. Если приложение продолжает функционировать должным образом после этого изменения, приложение использует TLS 1.2 или более поздней версии.

Примечание.

При открытии кэша на портале выберите "Дополнительно " в меню ресурсов. Если для экземпляра кэша задана минимальная версия TLS по умолчанию, минимальная версия TLS имеет значение TLS 1.2. TLS 1.2 — это значение по умолчанию, назначенное экземпляру кэша, если явное значение не выбрано.

Настройка приложения для использования TLS 1.2 или более поздней версии

Большинство приложений используют клиентские библиотеки Redis для управления связью со своим кэшем. Ниже приведены инструкции по настройке некоторых популярных клиентских библиотек на различных языках программирования и платформах для использования TLS 1.2 или более поздней версии.

.NET

Клиенты Redis .NET в .NET Framework 4.5.2 и более ранних версиях по умолчанию используют самую раннюю версию TLS, а в .NET Framework 4.6 и более поздних версиях используют последнюю версию TLS. Если вы используете прежнюю версию .NET Framework, включите протокол TLS 1.2 вручную:

  • StackExchange.Redis: задайте ssl=true и sslProtocols=tls12 в строка подключения.
  • ServiceStack.Redis: следуйте инструкциям ServiceStack.Redis и требуется ServiceStack.Redis версии 5.6 как минимум.

.NET Core

Клиенты Redis .NET Core по умолчанию используют версию протокола TLS, установленную по умолчанию в ОС, которая зависит от самой ОС.

В зависимости от версии ОС и всех примененных исправлений, действующая версия TLS по умолчанию может отличаться. Дополнительные сведения см. в статье Рекомендации по использованию протокола TLS с .NET.

Тем не менее, если вы используете прежнюю версию ОС или просто хотите быть уверенными, рекомендуется вручную настроить предпочтительную версию TLS в клиенте.

Java

Клиенты Redis Java используют протокол TLS 1.0 в Java 6 и более ранних версиях. Jedis, Lettuce и Redisson не смогут подключиться к кэшу Azure для Redis, если в нем отключен TLS 1.0. Обновите платформу Java, чтобы использовать новые версии TLS.

Для Java 7 клиенты Redis не используют TLS 1.2 по умолчанию, но могут быть настроены для этого. Например, Jedis позволяет указать базовые параметры TLS со следующим фрагментом кода:

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

Клиенты Lettuce и Redisson пока не поддерживают указание версии TLS. Они прерываются, если кэш принимает только подключения TLS 1.2. Исправления для этих клиентов рассматриваются, поэтому проверяйте обновления версий этих пакетов на наличие такой поддержки.

В Java 8 протокол TLS 1.2 используется по умолчанию, и в большинстве случаев обновления конфигурации клиента не требуется. На всякий случай протестируйте свое приложение.

По состоянию на Java 17 протокол TLS 1.3 используется по умолчанию.

Node.js

Node Redis и ioredis поддерживают TLS 1.2 и 1.3.

PHP

  • Версии, предшествующие PHP 7: Predis поддерживает только TLS 1.0. Эти версии не работают с TLS 1.2, для использования TLS 1.2 необходимо выполнить обновление.

  • PHP 7.0 до PHP 7.2.1: Predis использует только TLS 1.0 или 1.1 по умолчанию. Для использования TLS 1.2 можно использовать следующий обходной путь. При создании экземпляра клиента укажите TLS 1.2.

    $redis=newPredis\Client([
        'scheme'=>'tls',
        'host'=>'host',
        'port'=>6380,
        'password'=>'password',
        'ssl'=>[
            'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
        ],
    ]);
    
  • PHP 7.3 и более поздних версий: Predis использует последнюю версию TLS.

PhpRedis

PhpRedis не поддерживает TLS ни в какой версии PHP.

Python

Redis-py по умолчанию использует TLS 1.2.

GO

Redigo по умолчанию использует TLS 1.2.

Дополнительная информация: