Share via


在與 Azure Cache for Redis 搭配使用時移除 TLS 1.0 和 1.1

為了符合業界對傳輸層安全性 (TLS) 1.2 版或更新版本的獨佔使用,Azure Cache for Redis 正朝著要求在 2024 年 11 月使用 TLS 1.2 的方向邁進。 已知 TLS 1.0 和 1.1 版容易遭受 BEAST 和 POODLE 等攻擊,並具有其他常見的弱點和暴露程度(CVE) 弱點。

TLS 1.0 和 1.1 版也不支援支付卡產業 (PCI) 合規性標準所建議的新式加密方法和加密套件。 此 TLS 安全性部落格 會更詳細地說明其中一些弱點。

重要

在 2024 年 11 月 1 日,將會強制執行 TLS 1.2 需求。

重要

本文中的 TLS 1.0/1.1 淘汰內容不適用於 Azure Cache for Redis Enterprise/Enterprise Flash,因為企業層僅支援 TLS 1.2。

在這項工作中,您可以預期 Azure Cache for Redis 有下列變更:

  • 階段 1:Azure Cache for Redis 會停止提供 TLS 1.0/1.1 作為新快取建立的 MinimumTLSVersion 設定選項。 目前不會更新現有的快取實例。 您仍然可以使用 Azure 入口網站 或其他管理 API,將最低 TLS 版本變更為 1.0 或 1.1,以取得回溯相容性。
  • 階段 2:從 2024 年 11 月 1 日起,Azure Cache for Redis 會停止支援 TLS 1.1 和 TLS 1.0。 這項變更之後,您的應用程式必須使用 TLS 1.2 或更新版本來與快取通訊。 當我們將所有快取的 MinimumTLSVerion 更新為 1.2 時,將會提供 Azure Cache for Redis 服務。
Date 描述
2023 年 9 月 TLS 1.0/1.1 淘汰公告
2024 年 3 月 1 日 從 2024 年 3 月 1 日起,您將無法使用設定為 1.0 或 1.1 的最低 TLS 版本來建立新的快取,而且您無法將現有快取的 Minimium TLS 版本設定為 1.0 或 1.1。 目前不會自動更新現有快取的最低 TLS 版本。
2024 年 10 月 31 日 確定所有應用程式都使用 TLS 1.2 連線到 Azure Cache for Redis,且快取設定上的 TLS 最低版本設定為 1.2
2024 年 11 月 1 日 所有快取實例的最低 TLS 版本都會更新為 1.2。 這表示 Azure Cache for Redis 實例會拒絕使用 TLS 1.0 或 1.1 的連線。

重要

本文中的內容不適用於 Azure Cache for Redis Enterprise/Enterprise Flash,因為企業層僅支援 TLS 1.2。

在這項變更中,Azure Cache for Redis 會移除對不安全的舊版加密套件的支援。 當快取設定至少為 TLS 1.2 時,支援的加密套件會限制為下列套件:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

下列各節提供如何偵測這些舊版 TLS 相依性的指引,並將其從您的應用程式中移除。

檢查您的應用程式是否已經符合規範

您可以藉由將測試或預備快取上的 [最低 TLS 版本值] 設定為 TLS 1.2,然後執行測試,以瞭解您的應用程式是否可與 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=truesslProtocols=tls12
  • ServiceStack.Redis:遵循 ServiceStack.Redis 指示,並至少需要 ServiceStack.Redis v5.6。

.NET Core

Redis .NET Core 用戶端預設為 OS 預設 TLS 版本,視 OS 本身而定。

視操作系統版本和已套用的任何修補程式而定,有效的預設 TLS 版本可能會有所不同。 如需詳細資訊,請參閱 .NET Framework 的傳輸層安全性 (TLS) 最佳做法

不過,如果您使用舊的OS或只是想要確定,建議您透過用戶端手動設定慣用的TLS版本。

Java

Redis Java 用戶端在 Java 6 版或更早版本上使用 TLS 1.0。 如果快取上停用 TLS 1.0,Jedis、Lettuce 和 Redis 無法連線到 Azure Cache for Redis。 升級 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 和 Re比森客戶尚不支援指定 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 不支援任何 PHP 版本上的 TLS。

Python

Redis-py 預設會使用 TLS 1.2。

GO

Redigo 預設會使用 TLS 1.2。

其他資訊