次の方法で共有


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 の廃止に関する内容は、Enterprise レベルでは TLS 1.2 のみがサポートされるため、Azure Cache for Redis Enterprise/Enterprise Flash には適用されません。

この作業の一環として、Azure Cache for Redis に対して次の変更が予想されます。

  • フェーズ 1: Azure Cache for Redis では、新しいキャッシュ作成の MinimumTLSVersion 設定のオプションとしての TLS 1.0/1.1 の提供が停止されます。 この時点で既定のキャッシュ インスタンスが更新されることはありません。 既存のキャッシュに対して、 MinimiumTLSVersion を 1.0 または 1.1 に設定することはできません。
  • "フェーズ 2": Azure Cache for Redis では、2024 年 11 月 1 日から TLS 1.1 と TLS 1.0 のサポートが停止されます。 この変更以降、お使いのアプリケーションでは、TLS 1.2 以降を使用してキャッシュと通信する必要があります。 すべてのキャッシュの MinimumTLSVerion を 1.2 に更新している間、Azure Cache for Redis サービスを利用できます。
説明
2023 年 9 月 TLS 1.0/1.1 の廃止のお知らせ
2024 年 3 月 1 日 2024 年 3 月 1 日以降、最小 TLS バージョンが 1.0 または 1.1 に設定された新しいキャッシュを作成できません。また既存のキャッシュに対して MinimumTLSVersion を 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 を使用する接続が現時点では拒否されることを意味します。

重要

この記事の内容は、Enterprise レベルでは TLS 1.2 のみがサポートされるため、Azure Cache for Redis Enterprise/Enterprise Flash には適用されません。

この変更の一環として、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 1.2 で機能するかどうかを確認するには、テストまたはステージング キャッシュで TLS のバージョン要件を 1.2 以上に設定して、テストを実行します。 [TLS の最小バージョン] 設定は、Azure portal 内のキャッシュ インスタンスの [詳細設定] にあります。 この変更後もアプリケーションが期待どおりに機能する場合、そのアプリは TLS 1.2 以降を使っています。

Note

ポータルでキャッシュを開いた状態で、リソース メニューの [詳細] を選びます。 キャッシュ インスタンスの最小 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 ごとに異なります。

OS のバージョンと適用したパッチにより、既定で有効になる TLS のバージョンは異なります。 詳細については、「.NET Framework でのトランスポート層セキュリティ (TLS) のベスト プラクティス」を参照してください。

ただし、古い OS を使用している場合またはバージョンを確実に指定したい場合は、クライアントから、希望の TLS バージョンを手動で設定することをお勧めします。

Java

Redis Java クライアントは、Java バージョン 6 以前では TLS 1.0 を使用します。 TLS 1.0 がキャッシュで無効になっている場合、Jedis、Lettuce、Redisson は Azure Cache for Redis に接続できません。 新しい TLS バージョンを使用するように Java フレームワークをアップグレードします。

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 は、どの PHP バージョンでも TLS をサポートしていません。

Python

Redis-py は、既定で TLS 1.2 を使用します。

GO

Redigo は、既定で TLS 1.2 を使用します。

関連情報