【Azure Redis 缓存 Azure Cache For Redis】Azure Redis删除 TLS 1.0 和 1.1的计划及问题

问题描述

Azure Redis 正式关闭TLS1.0和1.1关闭的时间

根据文档描述Azure Redis阶段2我们将停止支持 TLS 1.1 和 TLS 1.0,暂时计划 2020 年 12 月 31 日之后开始。 

整个行业正趋向于使用传输层安全性 (TLS) 1.2 或更高版本。 TLS 版本 1.0 和 1.1 已知很容易遭到 BEAST 和 POODLE 之类的攻击,并且存在其他常见漏洞和披露 (CVE) 弱点。 此外,它们不支持支付卡行业 (PCI) 合规性标准推荐的新式加密法和加密套件。 此 TLS 安全性博客详细说明了其中一些漏洞。

作为此项工作的一部分,我们将对 Azure Cache for Redis 进行以下更改:

  • 阶段 1: 对于新创建的缓存实例,我们会将默认的最低 TLS 版本配置为 1.2(以前为 TLS 1.0)。 目前,不会更新现有的缓存实例。 如果需要,仍可使用 Azure 门户或其他管理 API 将最低的 TLS 版本更改 为 1.0 或 1.1,以实现后向兼容性。

  • 阶段 2: 我们将停止支持 TLS 1.1 和 TLS 1.0。 在此更改之后,应用程序必须使用 TLS 1.2 或更高版本才能与缓存通信。 如果我们迁移 Azure Cache for Redis 服务以仅支持 TLS 1.2 或更高版本,则该服务应可用。

    阶段 2 暂时计划 2020 年 12 月 31 日之后开始。 但是,我们强烈建议你立即开始规划此更改,并主动更新客户端以支持 TLS 1.2 或更高版本。

在Azure Redis的门户上,可以直接修改TLS的版本,如下图:

而在服务端Redis修改了TLS版本后,客户端也需要验证及考虑如下问题:

1 .  是否针对所有使用Redis的Web App 都需要升级为1.2 版本,如果Web App的.Net Framework使用的是4.5.2及以下,或者4.6.1是否全部升级为1.2 呢?

如果应用程序使用的是.NET Framework 4.5.2或更低版本,Redis .NET客户端默认使用最低的TLS版本,是需要手动启用TLS 1.2的。

如果应用程序使用的.NET Framework 4.6或更高版本的话,则使用最新的TLS版本,是不需要在代码中手动启用的。

微软官方文档推荐检查应用程序是否合规的方式是:可以通过把测试环境的Redis的最低TLS版本值设置为TLS 1.2,然后运行测试,如果应用程序可继续按预期方式运行,则应用程序可能是合规的。

2 .  Redis 是否需要全部手动升级为1.2

在停用TLS 1.1和1.0之前,建议把redis的最低TLS版本修改为1.2,然后检查应用程序是否可以正常连接。如果有需要的话,则把应用程序Redis客户端配置为启用TLS 1.2。

3 .  Redis 的使用涉及到.net 、.net core 、java(spring boot)框架,.net 使用的是StackExchange.Redis ,java 使用的是Jedis . 因此是否都需要都需要设置 ssl=true 和 sslprotocols=tls12

对于.NET Framework的话,根据Framework版本来检查。

对于.NET Core的话取决与操作系统本身,StackExchange.Redis修改的方式是在连接字符串中设置ssl=true 和 sslprotocols=tls12。

对于java的话,在java 8中默认会使用TLS 1.2,并且大多数情况都不需要更新客户端配置。对于低版本的Java如果使用的是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);

参考资料

删除与 Azure Cache for Redis 配合使用的 TLS 1.0 和 1.1: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-remove-tls-10-11

原文地址:https://www.cnblogs.com/lulight/p/14086983.html