Wycofanie z użycia protokołu TLS w wersji 1.0 i 1.1 w usłudze Azure Cache for Redis
Aby spełnić wymagania branżowe dotyczące wyłącznego użycia protokołu Transport Layer Security (TLS) w wersji 1.2 lub nowszej, usługa Azure Cache for Redis przechodzi w kierunku wymagania użycia protokołu TLS 1.2 w marcu 2025 r. Protokoły TLS w wersji 1.0 i 1.1 są znane jako podatne na ataki, takie jak BEAST i POODLE, oraz inne słabe luki w zabezpieczeniach i ekspozycji (CVE).
Protokoły TLS w wersji 1.0 i 1.1 również nie obsługują nowoczesnych metod szyfrowania i zestawów szyfrowania zalecanych przez standardy zgodności z kartami payment Card Industry (PCI). W tym blogu dotyczącym zabezpieczeń protokołu TLS bardziej szczegółowo opisano niektóre z tych luk w zabezpieczeniach.
Ważne
Od 1 marca 2025 r. zostanie wymuszone wymaganie protokołu TLS 1.2.
Ważne
Zawartość wycofania protokołu TLS 1.0/1.1 w tym artykule nie ma zastosowania do usługi Azure Cache for Redis Enterprise/Enterprise Flash, ponieważ warstwy Enterprise obsługują tylko protokół TLS 1.2 lub nowszy.
W ramach tego nakładu pracy można oczekiwać następujących zmian w usłudze Azure Cache for Redis:
- Faza 1. Usługa Azure Cache for Redis przestaje oferować protokół TLS 1.0/1.1 jako opcję ustawienia MinimumTLSVersion dla tworzenia nowej pamięci podręcznej. Istniejące wystąpienia pamięci podręcznej nie zostaną zaktualizowane w tym momencie. Dla istniejącej pamięci podręcznej nie można ustawić wartości MinimumTLSVersion na 1.0 lub 1.1.
- Faza 2. Usługa Azure Cache for Redis przestaje obsługiwać protokoły TLS 1.1 i TLS 1.0 od 1 marca 2025 r. Po tej zmianie aplikacja musi używać protokołu TLS 1.2 lub nowszego do komunikowania się z pamięcią podręczną. Usługa Azure Cache for Redis pozostaje dostępna podczas aktualizowania parametru MinimumTLSVersion dla wszystkich pamięci podręcznych do wersji 1.2.
Data | opis |
---|---|
Wrzesień 2023 | Ogłoszenie wycofania protokołu TLS 1.0/1.1 |
1 marca 2024 r. | Od 1 marca 2024 r. nie można tworzyć nowych pamięci podręcznych z minimalną wersją protokołu TLS ustawioną na 1.0 lub 1.1 i nie można ustawić wartości MinimumTLSVersion na 1.0 lub 1.1 dla istniejącej pamięci podręcznej. Minimalna wersja protokołu TLS nie jest aktualizowana automatycznie dla istniejących pamięci podręcznych w tym momencie. |
31 października 2024 r. | Upewnij się, że wszystkie aplikacje łączą się z usługą Azure Cache for Redis przy użyciu protokołu TLS 1.2 i Minimalna wersja protokołu TLS w ustawieniach pamięci podręcznej jest ustawiona na 1.2. |
Od 1 marca 2025 r. | Minimalna wersja protokołu TLS dla wszystkich wystąpień pamięci podręcznej jest aktualizowana do wersji 1.2. Oznacza to, że wystąpienia usługi Azure Cache for Redis odrzucają połączenia przy użyciu protokołu TLS 1.0 lub 1.1 w tym momencie. |
Ważne
Zawartość tego artykułu nie dotyczy usługi Azure Cache for Redis Enterprise/Enterprise Flash, ponieważ warstwy Enterprise obsługują tylko protokół TLS 1.2.
W ramach tej zmiany usługa Azure Cache for Redis usuwa obsługę starszych zestawów szyfrowania, które nie są bezpieczne. Obsługiwane zestawy szyfrowania są ograniczone do następujących zestawów, gdy pamięć podręczna jest skonfigurowana z co najmniej protokołem TLS 1.2:
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256
W poniższych sekcjach przedstawiono wskazówki dotyczące wykrywania zależności we wcześniejszych wersjach protokołu TLS i usuwania ich z aplikacji.
Sprawdzanie wersji protokołu TLS obsługiwanych przez usługę Azure Cache for Redis
Ten skrypt programu PowerShell umożliwia sprawdzenie wersji protokołu TLS obsługiwanych przez punkt końcowy usługi Azure Cache for Redis. Jeśli wystąpienie usługi Redis jest wstrzyknięte do sieci wirtualnej, musisz uruchomić ten skrypt z maszyny wirtualnej w sieci wirtualnej, która ma dostęp do punktu końcowego usługi Azure Cache for Redis.
Jeśli wynik pokazuje Tls Enabled
i/lub Tls 11 Enabled
, upewnij się, że postępuj zgodnie z instrukcjami, aby skonfigurować usługę Azure Cache for Redis do korzystania z protokołu TLS 1.2. Jeśli wynik jest wyświetlany tylko i Tls12 Enabled
aplikacja kliencka może nawiązać połączenie bez żadnych błędów, nie jest wymagana żadna akcja.
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 $_"
}
}
}
Konfigurowanie usługi Azure Cache for Redis do używania protokołu TLS 1.2
Protokół TLS 1.2 można skonfigurować w pamięci podręcznej, ustawiając wartość Minimalna wersja protokołu TLS na TLS 1.2 w ustawieniach zaawansowanych pamięci podręcznej w witrynie Azure Portal.
Aby skonfigurować pamięć podręczną do używania protokołu TLS 1.2, najpierw wybierz pozycję Ustawienia zaawansowane w menu Zasób pamięci podręcznej.
Wybierz pozycję 1.2 w minimalnej wersji protokołu TLS w okienku roboczym. Następnie wybierz pozycję Zapisz.
Możesz również wykonać to samo przy użyciu programu PowerShell. Moduł Az.RedisCache jest już zainstalowany przed uruchomieniem polecenia.
Set-AzRedisCache -Name <YourRedisCacheName> -MinimumTlsVersion "1.2"
Ustawienie wersji protokołu TLS za pośrednictwem interfejsu wiersza polecenia --minimum-tls-version
jest dostępne tylko w czasie tworzenia usługi Redis i zmiana minimum-tls-version
w istniejącym wystąpieniu usługi Redis nie jest obsługiwana.
Uwaga
Usługa Azure Cache for Redis powinna być dostępna podczas migracji protokołu TLS 1.2 lub nowszego.
Sprawdzanie, czy aplikacja kliencka jest już zgodna
Możesz sprawdzić, czy aplikacja współpracuje z protokołem TLS 1.2, ustawiając wartość Minimalna wersja protokołu TLS na TLS 1.2, jak wyjaśniono wcześniej, na testowej lub przejściowej pamięci podręcznej, a następnie uruchamiając testy. Jeśli aplikacja nadal działa zgodnie z oczekiwaniami po tej zmianie, prawdopodobnie jest zgodna. Możliwe, że konieczne może być skonfigurowanie biblioteki klienta Redis używanej przez aplikację w celu włączenia protokołu TLS 1.2 w celu nawiązania połączenia z usługą Azure Cache for Redis.
Konfigurowanie aplikacji klienta do użycia protokołu TLS 1.2
Większość aplikacji używa bibliotek klienckich usługi Redis do obsługi komunikacji z pamięciami podręcznymi. Poniżej przedstawiono instrukcje dotyczące konfigurowania niektórych popularnych bibliotek klienckich w różnych językach programowania i strukturach do używania protokołu TLS 1.2.
.NET
Klienci redis .NET używają domyślnie najwcześniejszej wersji protokołu TLS w programie .NET Framework 4.5.2 lub starszym i używają najnowszej wersji protokołu TLS na platformie .NET Framework 4.6 lub nowszej. Jeśli używasz starszej wersji programu .NET Framework, włącz protokół TLS 1.2 ręcznie:
- StackExchange.Redis: ustaw
ssl=true
isslProtocols=tls12
w parametry połączenia. - ServiceStack.Redis: postępuj zgodnie z instrukcjami dotyczącymi biblioteki ServiceStack.Redis i wymaga usługi ServiceStack.Redis w wersji 5.6 co najmniej.
.NET Core
Klienci redis .NET Core są domyślnie domyślną wersją protokołu TLS systemu operacyjnego, która zależy od samego systemu operacyjnego.
W zależności od wersji systemu operacyjnego i zastosowanych poprawek obowiązująca domyślna wersja protokołu TLS może się różnić. Aby uzyskać więcej informacji, zobacz Transport Layer Security (TLS) — najlepsze rozwiązania dotyczące środowiska .NET Framework.
Jeśli jednak używasz starego systemu operacyjnego lub po prostu chcesz mieć pewność, zalecamy ręczne skonfigurowanie preferowanej wersji protokołu TLS za pośrednictwem klienta.
Java
Klienci języka Java usługi Redis używają protokołu TLS 1.0 w środowisku Java w wersji 6 lub starszej. Jedis, Lettuce i Redisson nie mogą nawiązać połączenia z usługą Azure Cache for Redis, jeśli protokół TLS 1.0 jest wyłączony w pamięci podręcznej. Uaktualnij platformę Java, aby używać nowych wersji protokołu TLS.
W przypadku języka Java 7 klienci redis nie używają domyślnie protokołu TLS 1.2, ale można go skonfigurować. Na przykład usługa Jedis umożliwia określenie podstawowych ustawień protokołu TLS przy użyciu następującego fragmentu kodu:
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);
Klienci Lettuce i Redisson nie obsługują jeszcze określania wersji protokołu TLS. Przerywają one, jeśli pamięć podręczna akceptuje tylko połączenia TLS 1.2. Poprawki dla tych klientów są przeglądane, więc zapoznaj się z tymi pakietami, aby uzyskać zaktualizowaną wersję z tą obsługą.
W środowisku Java 8 protokół TLS 1.2 jest używany domyślnie i nie powinien wymagać aktualizacji konfiguracji klienta w większości przypadków. Aby zapewnić bezpieczeństwo, przetestuj aplikację.
Od wersji Java 17 protokół TLS 1.3 jest domyślnie używany.
Node.js
Usługi Node Redis i ioredis obsługują protokoły TLS 1.2 i 1.3.
PHP
Wersje wcześniejsze niż PHP 7: Usługa Predis obsługuje tylko protokół TLS 1.0. Te wersje nie działają z protokołem TLS 1.2; Należy uaktualnić do korzystania z protokołu TLS 1.2.
Php 7.0 do PHP 7.2.1: Usługa Predis domyślnie używa tylko protokołu TLS 1.0 lub 1.1. Aby użyć protokołu TLS 1.2, możesz użyć następującego obejścia. Określ protokół TLS 1.2 podczas tworzenia wystąpienia klienta:
$redis=newPredis\Client([
'scheme'=>'tls',
'host'=>'host',
'port'=>6380,
'password'=>'password',
'ssl'=>[
'crypto_type'=>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
],
]);
Php 7.3 i nowsze wersje: usługa Predis używa najnowszej wersji protokołu TLS.
PhpRedis
Język PhpRedis nie obsługuje protokołu TLS w żadnej wersji języka PHP.
Python
Usługa Redis-py domyślnie używa protokołu TLS 1.2.
JĘZYK GO
Redigo domyślnie używa protokołu TLS 1.2.