Удаление поддержки TLS 1.0 и 1.1 при работе с Кэшем Azure для Redis
Чтобы удовлетворить толчок всей отрасли к эксклюзивному использованию tls версии 1.2 или более поздней, Кэш Azure для Redis движется к использованию TLS 1.2 в марте 2025 года. Известно, что протоколы TLS версий 1.0 и 1.1 подвержены атакам, таким как BEAST и POODLE, и имеют другие общеизвестные уязвимости (CVE).
Tls версии 1.0 и 1.1 также не поддерживают современные методы шифрования и наборы шифров, рекомендуемые стандартами соответствия платной картой (PCI). В блоге по безопасности TLS подробно рассматриваются некоторые из этих уязвимостей.
Внимание
Начиная с 1 марта 2025 г. требование 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 для создания нового кэша. На этом этапе существующие экземпляры кэша затронуты не будут. Для существующего кэша не удается задать значение MinimumTLSVersion 1.0 или 1.1.
- Этап 2. Кэш Azure для Redis останавливает поддержку TLS 1.1 и TLS 1.0 с 1 марта 2025 г. После этого изменения приложение для взаимодействия с кэшем должно будет использовать TLS 1.2 или более поздней версии. Служба Кэш Azure для Redis остается доступной при обновлении MinimumTLSVerion для всех кэшей до 1.2.
Дата | Description |
---|---|
Сентябрь 2023 | Объявление о выходе tls 1.0/1.1 |
1 марта 2024 г. | Начиная с 1 марта 2024 г., невозможно создать новые кэши с минимальной версией TLS, установленной для версии 1.0 или 1.1, и невозможно задать значение MinimumTLSVersion 1.0 или 1.1 для существующего кэша. Минимальная версия TLS не будет обновляться автоматически для существующих кэшей на этом этапе. |
31 октября 2024 г. | Убедитесь, что все приложения подключаются к Кэш Azure для Redis с помощью TLS 1.2 и минимальной версии TLS в параметрах кэша имеет значение 1.2. |
Начиная с 1 марта 2025 г. | Минимальная версия 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 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.