Aracılığıyla paylaş


Redis için Azure Cache ile TLS 1.0 ve 1.1 sürümlerini kullanımdan kaldırma

Aktarım Katmanı Güvenliği (TLS) sürüm 1.2 veya sonraki sürümlerin özel kullanımına yönelik sektör genelindeki gönderimi karşılamak için Redis için Azure Cache, Nisan 2025'te TLS 1.2'nin kullanılmasını zorunlu hale getirmek üzere hareket etmektedir. TLS 1.0 ve 1.1 sürümlerinin BEAST ve POODLE gibi saldırılara karşı duyarlı olduğu ve diğer Ortak Güvenlik Açıkları ve Etkilenmeleri (CVE) zayıflıklarına sahip olduğu bilinmektedir.

TLS 1.0 ve 1.1 sürümleri, Ödeme Kartı Endüstrisi (PCI) uyumluluk standartları tarafından önerilen modern şifreleme yöntemlerini ve şifre paketlerini de desteklemez. Bu TLS güvenlik blogunda bu güvenlik açıklarından bazıları daha ayrıntılı olarak açıklanmaktadır.

Önemli

1 Nisan 2025 tarihinden itibaren TLS 1.2 gerekliliği zorunlu kılınacaktır.

Önemli

Kurumsal katmanları yalnızca TLS 1.2 veya üzerini desteklediğinden, bu makaledeki TLS 1.0/1.1 kullanımdan kaldırma içeriği Redis için Azure Cache Enterprise/Enterprise Flash için geçerli değildir.

Bu çabanın bir parçası olarak, aşağıdaki değişikliklerin Redis için Azure Cache bekleyebilirsiniz:

  • 1. Aşama: Redis için Azure Cache, yeni önbellek oluşturma işlemleri için MinimumTLSVersion ayarı seçeneği olarak TLS 1.0/1.1 sunmayı durdurur. Mevcut önbellek örnekleri bu noktada güncelleştirilmez. Mevcut önbelleğiniz için MinimumTLSVersion değerini 1.0 veya 1.1 olarak ayarlayamazsınız.
  • 2. Aşama: Redis için Azure Cache 1 Nisan 2025'den itibaren TLS 1.1 ve TLS 1.0'ı desteklemeyi durduruyor. Bu değişiklikten sonra uygulamanızın önbelleğinizle iletişim kurmak için TLS 1.2 veya sonraki bir sürümü kullanması gerekir. tüm önbellekler için MinimumTLSVersion'ı 1.2 olarak güncelleştirirken Redis için Azure Cache hizmeti kullanılabilir durumda kalır.
Date Açıklama
Eylül 2023 TLS 1.0/1.1 kullanımdan kaldırma duyurusu
1 Mart 2024 1 Mart 2024'ten itibaren, En Düşük TLS sürümü 1.0 veya 1.1 olarak ayarlanmış yeni önbellekler oluşturamaz ve mevcut önbelleğiniz için MinimumTLSVersion değerini 1.0 veya 1.1 olarak ayarlayamazsınız. Bu noktada mevcut önbellekler için en düşük TLS sürümleri otomatik olarak güncelleştirilmez.
31 Mart 2025 Pazartesi Tüm uygulamalarınızın TLS 1.2 kullanarak Redis için Azure Cache bağlandığından ve önbellek ayarlarınızdaki Minimum TLS sürümünün 1.2 olarak ayarlandığından emin olun.
1 Nisan 2025'den itibaren Tüm önbellek örnekleri için en düşük TLS sürümü 1.2 olarak güncelleştirilir. Bu, Redis için Azure Cache örneklerin bu noktada TLS 1.0 veya 1.1 kullanarak bağlantıları reddettiği anlamına gelir.

Bu değişikliğin bir parçası olarak Redis için Azure Cache güvenli olmayan eski şifreleme paketleri desteğini kaldırır. Önbellek en az TLS 1.2 ile yapılandırıldığında desteklenen şifreleme paketleri aşağıdaki paketlerle sınırlıdır:

  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256

Aşağıdaki bölümlerde, bu önceki TLS sürümlerine bağımlılıkları algılama ve bunları uygulamanızdan kaldırma hakkında rehberlik sağlanır.

Redis için Azure Cache tarafından desteklenen TLS sürümlerini denetleyin

Azure portalındaki önbelleğinizin Gelişmiş ayarlarında En Düşük TLS sürüm değerinin TLS 1.2 olarak ayarlandığını doğrulayabilirsiniz. TLS 1.2 dışında bir değerse, Redis için Azure Cache TLS 1.2 kullanacak şekilde yapılandırma bölümündeki yönergeleri izlediğinizden emin olun. Değer TLS 1.2 ise ve istemci uygulamanız herhangi bir hata olmadan bağlanabiliyorsa hiçbir eylem gerekmez.

Bu PowerShell betiğini, Redis için Azure Cache uç noktanız tarafından desteklenen en düşük TLS sürümünü doğrulamak için de kullanabilirsiniz. Redis örneğiniz sanal ağ (VNet) eklenmişse, bu betiği Redis için Azure Cache uç noktasına erişimi olan sanal ağınızdaki bir Sanal Makineden çalıştırmanız gerekir. Sonuç ve/veya gösteriyorsaTls Enabled, Redis için Azure Cache TLS 1.2 kullanacak şekilde yapılandırma bölümündeki yönergeleri izlediğinizden emin Tls 11 Enabledolun. Sonuç yalnızca Tls12 Enabled gösteriliyorsa ve istemci uygulamanız herhangi bir hata olmadan bağlanabiliyorsa hiçbir eylem gerekmez.

    param(
    [Parameter(Mandatory=$true)]
    [string]$redisCacheName,
    [Parameter(Mandatory=$false)]
    [string]$dnsSuffix = ".redis.cache.windows.net",
    [Parameter(Mandatory=$false)]
    [int]$connectionPort = 6380,
    [Parameter(Mandatory=$false)]
    [int]$timeoutMS = 2000
    )
    $redisEndpoint = "$redisCacheName$dnsSuffix"
    $protocols = @(
        [System.Security.Authentication.SslProtocols]::Tls,
        [System.Security.Authentication.SslProtocols]::Tls11,
        [System.Security.Authentication.SslProtocols]::Tls12
    )
    $protocols | % {
        $ver = $_
        $tcpClientSocket = New-Object Net.Sockets.TcpClient($redisEndpoint, $connectionPort )
        if(!$tcpClientSocket)
        {
            Write-Error "$ver- Error Opening Connection: $port on $computername Unreachable"
            exit 1;
        }
        else
        {
            $tcpstream = $tcpClientSocket.GetStream()
            $sslStream = New-Object System.Net.Security.SslStream($tcpstream,$false)
            $sslStream.ReadTimeout = $timeoutMS
            $sslStream.WriteTimeout = $timeoutMS
            try
            {
                $sslStream.AuthenticateAsClient($redisEndpoint, $null, $ver, $false)
                Write-Host "$ver Enabled"
            }
            catch [System.IO.IOException]
            {
                $null = $_
                #Write-Host "$ver Disabled"
            }
            catch
            {
                $null = $_
                #Write-Error "Unexpected exception $_"
            }
        }
    }

Azure Cache for Redis'i TLS 1.2'yi kullanacak şekilde yapılandırma

Azure Portal'da önbelleğinizin Gelişmiş ayarlar bölümünde En düşük TLS sürümü değerini TLS 1.2 olarak ayarlayarak önbellekte TLS 1.2'yi yapılandırabilirsiniz.

  1. Önbelleğinizi TLS 1.2 kullanacak şekilde yapılandırmak için önce önbelleğinizin Kaynak menüsünden Gelişmiş ayarlar'ı seçin.

  2. Çalışma bölmesinde, En düşük TLS sürümü değerini 1.2 olarak seçin. Ardından Kaydet’i seçin.

Aynı işlemi PowerShell kullanarak da yapabilirsiniz. Komutu çalıştırmadan önce Az.RedisCache modülünün hâlihazırda kurulu olması gerekir.

   Set-AzRedisCache -Name <YourRedisCacheName> -MinimumTlsVersion "1.2"

TLS sürümünü CLI üzerinden ayarlamak isterseniz --minimum-tls-version yalnızca Redis oluşturma sırasında kullanılabilir ve mevcut bir Redis örneğinde minimum-tls-version değerinin değiştirilmesi desteklenmez.

Not

Redis için Azure Cache hizmeti TLS 1.2 veya sonraki bir sürüme geçiş sırasında kullanılabilir olmalıdır.

İstemci uygulamanızın zaten uyumlu olup olmadığını denetleyin

Uygulamanızın TLS 1.2 ile çalışıp çalışmadığını daha önce açıklandığı gibi TLS 1.2'ye ayarlayarak, bir test veya hazırlama önbelleğinde ve ardından testleri çalıştırarak öğrenebilirsiniz. Uygulama bu değişiklik sonrasında beklendiği gibi çalışmaya devam ederse, büyük olasılıkla uyumlu olur. TLS 1.2'nin Redis için Azure Cache bağlanması için uygulamanız tarafından kullanılan Redis istemci kitaplığını yapılandırmanız gerekebilir.

İstemci uygulamanızı TLS 1.2'yi kullanacak şekilde yapılandırma

Çoğu uygulama, önbellekleriyle iletişimi işlemek için Redis istemci kitaplıklarını kullanır. Aşağıda, çeşitli programlama dillerinde ve çerçevelerde popüler istemci kitaplıklarından bazılarını TLS 1.2 kullanacak şekilde yapılandırma yönergeleri yer alır.

.NET

Redis .NET istemcileri .NET Framework 4.5.2 veya önceki sürümlerinde varsayılan olarak en eski TLS sürümünü ve .NET Framework 4.6 veya sonraki sürümlerinde en son TLS sürümünü kullanır. .NET Framework'ün eski bir sürümünü kullanıyorsanız TLS 1.2'yi el ile etkinleştirin:

  • StackExchange.Redis: bağlantı dizesi ve sslProtocols=tls12 değerini ayarlayınssl=true.
  • ServiceStack.Redis: ServiceStack.Redis yönergelerini izleyin ve en azından ServiceStack.Redis v5.6 gerektirir.

.NET Core

Redis .NET Core istemcileri, işletim sisteminin kendisine bağlı olan işletim sistemi varsayılan TLS sürümünü varsayılan olarak kullanır.

İşletim sistemi sürümüne ve uygulanan yamalara bağlı olarak, etkin varsayılan TLS sürümü değişebilir. Daha fazla bilgi için bkz. .NET Framework ile Aktarım Katmanı Güvenliği (TLS) en iyi yöntemleri.

Ancak, eski bir işletim sistemi kullanıyorsanız veya yalnızca emin olmak istiyorsanız, tercih edilen TLS sürümünü istemci aracılığıyla el ile yapılandırmanızı öneririz.

Java

Redis Java istemcileri, Java sürüm 6 veya önceki sürümlerde TLS 1.0 kullanır. Önbellekte TLS 1.0 devre dışı bırakılırsa Jedis, Lettuce ve Redisson Redis için Azure Cache'a bağlanamaz. Java çerçevenizi yeni TLS sürümlerini kullanacak şekilde yükseltin.

Java 7 için Redis istemcileri varsayılan olarak TLS 1.2 kullanmaz, ancak bunun için yapılandırılabilir. Örneğin, Jedis aşağıdaki kod parçacığıyla temel alınan TLS ayarlarını belirtmenize olanak tanır:

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 ve Redisson istemcileri henüz TLS sürümünü belirtmeyi desteklememektedir. Önbellek yalnızca TLS 1.2 bağlantılarını kabul ederse bozulırlar. Bu istemciler için düzeltmeler gözden geçiriliyor, bu nedenle bu destekle güncelleştirilmiş bir sürüm için bu paketlere bakın.

Java 8'de TLS 1.2 varsayılan olarak kullanılır ve çoğu durumda istemci yapılandırmanızda güncelleştirme gerektirmemelidir. Güvende olmak için uygulamanızı test edin.

Java 17'den itibaren TLS 1.3 varsayılan olarak kullanılır.

Node.js

Node Redis ve ioredis hem TLS 1.2 hem de 1.3'i destekler.

PHP

PHP 7'den önceki sürümler: Predis yalnızca TLS 1.0'ı destekler. Bu sürümler TLS 1.2 ile çalışmaz; TLS 1.2 kullanmak için yükseltmeniz gerekir.

PHP 7.0 ile PHP 7.2.1: Predis varsayılan olarak yalnızca TLS 1.0 veya 1.1 kullanır. TLS 1.2'yi kullanmak için aşağıdaki geçici çözümü kullanabilirsiniz. İstemci örneğini oluştururken TLS 1.2 belirtin:

$redis=newPredis\Client([
    'scheme'=>'tls',
    'host'=>'host',
    'port'=>6380,
    'password'=>'password',
    'ssl'=>[
        'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
    ],
]);

PHP 7.3 ve sonraki sürümleri: Predis en son TLS sürümünü kullanır.

PhpRedis

PhpRedis, herhangi bir PHP sürümünde TLS'i desteklemez.

Python

Redis-py varsayılan olarak TLS 1.2 kullanır.

GO

Redigo varsayılan olarak TLS 1.2 kullanır.