Versiunea .NET Framework 3.5.1 și versiunile mai vechi nu au oferit suport pentru aplicațiile care utilizează versiunile implicite de sistem Transport Layer Security (TLS) ca protocol criptografic. Această actualizare permite utilizarea TLS v1.2 în .NET Framework 3.5.1.
NotăAcest conținut a fost pus la dispoziție în Windows Update. Pentru a obține conținutul, scanați și Windows Update pentru cele mai recente .NET Framework actualizări. Dacă sistemul dvs. este complet actualizat prin intermediul Windows Update, nu trebuie să luați măsuri suplimentare.
Rezolvare
Descărcarea informațiilor
Remedierea rapidă care corespunde cu KB3154518 a fost suprasponicată cu cele mai recente actualizări de .NET Framework, care conțin toate remedierile care au fost incluse anterior în KB3154518. Se recomandă să instalați cele mai recente actualizări de .NET Framework.
Am făcut următoarele îmbunătățiri în acest domeniu:
-
Următoarele chei de registry pot fi setate să utilizeze valorile implicite ale sistemului de operare pentru SSL și TLS în locul valorilor implicite de .NET Framework codate pentru o aplicație gestionată care rulează pe computer.
-
Pentru sisteme de operare pe 64 de biți:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001 -
Pentru sisteme de operare pe 32 de biți:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Notă Dacă aplicația a setat ServicePointManager.SecureProtocol în cod sau prin configurarea fișierelor la o anumită valoare sau utilizează API-urile SslStream.AuthenticateAs* pentru a specifica un anumit SSLProtocols enum, comportamentul setării de registry nu are loc.
-
-
În plus, am adăugat sslProtocolsExtensions pe care le puteți utiliza ca opțiune pentru setarea TLS v1.2, TLS v1.1, precum și valorile implicite ale sistemului de operare pentru proprietatea ServicePointManager.SecurityProtocol atunci când țintiți spre .NET Framework versiunea 2.0 SP2. (Consultați secțiunea Instrucțiuni pentru dezvoltatori pentru informații despre utilizarea extensiilor.)
Rețineți Windows Vista SP2 și Windows Server 2008 SP2 nu acceptă versiunile de protocol Transport Layer Security (TLS) mai noi decât 1.0. Aplicațiile .NET Framework 2.0 SP2 gestionate care rulează pe Windows Vista SP2 sau Windows Server 2008 SP2 nu pot utiliza TLS 1.2 sau TLS 1.1, chiar dacă aceste protocoale sunt setate în proprietatea ServicePointManager.SecurityProtocol.
Pentru mai multe informații despre descărcarea fișierelor de asistență Microsoft, faceți clic pe următorul număr de articol pentru a vizualiza articolul din Baza de cunoștințe Microsoft:
119591 Cum să obțineți fișiere de asistență Microsoft de la serviciile online Microsoft a scanat acest fișier împotriva virușilor. Microsoft a utilizat cel mai recent software de detectare a virușilor care a fost disponibil la data postării fișierului. Fișierul este stocat pe servere cu securitate îmbunătățită care previn modificările neautorizate ale fișierului.
Instrucțiuni pentru dezvoltatori
Definiția noilor extensii se află în următoarele fișiere:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{
utilizând System.Security.Authentication;
public static class SecurityProtocolTypeExtensions
{
const public SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12;
const public SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11;
const public SecurityProtocolType SystemDefault = (SecurityProtocolType)0;
}
} -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{
SslProtocolsExtensions pentru clasa statică publică
{
const public SslProtocols Tls12 = (SslProtocols)0x00000C00;
const public SslProtocols Tls11 = (SslProtocols)0x00000300;
}
}
Pentru a include suportul pentru TLS v1.2, includeți fișierele sursă în proiect, apoi setați versiunea de protocol utilizând următoarele metode:
-
Aplicațiile care utilizează API-uri bazate pe ServicePointManager pot seta protocolul utilizând următoarele:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Aplicațiile care utilizează supraîncărcarea SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) poate seta valoarea SslProtocols ca SslProtocolsExtensions.Tls12.
Dacă setarea de registry menționată în primul paragraf este setată și valoarea SslProtocols este setată în aplicație ca SslProtocols.None, comportamentul implicit al sistemului ales va depinde de versiunea Windows.
De asemenea, atunci când modificați codul de aplicație pentru a activa suportul pentru TLS v1.2 cu .NET Framework 3.5 SP1, trebuie să vă asigurați că rezolvați următoarele excepții pe computerele pe care nu este implementată această corecție:
-
Dacă nu este instalată remedierea rapidă, API-urile bazate pe ServicePointManager (HTTP, FTP, SMTP) vor debarasa "System.NotSupportedException: Protocolul de securitate solicitat nu este acceptat" atunci când aplicația apelează ServicePointManager.SecurityProtocol pentru a seta noua valoare.
-
Dacă remedierea rapidă nu este instalată, API-urile bazate pe SslStream vor da excepții atunci când apelează oricare dintre API-urile AuthenticateAs*:
System.ArgumentException: Valoarea specificată nu este validă în enumerarea "SslProtocolType".
Nume parametru: sslProtocolType
Notă Doar pentru SslStream, o combinație de Tls12, Tls11 cu oricare dintre Tls existente, Ssl3, Ssl2 (de exemplu: Tls12 | Tls11 | Tls) va retrograda silențios protocoalele existente (de exemplu: Tls) pe un sistem fără corecție. Acesta se va conecta la Tls fără să cuoată excepția.
Mai multe informații
Pentru a activa TLS v1.1 sau v1.2 ca implicite pentru sistemul de operare, urmați instrucțiunile de la https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12.
Rețineți că TLS v1.1 și v1.2 nu sunt disponibile în Windows Vista sau Windows Server 2008.
Dacă trebuie să dezactivați setările implicite ale sistemului de operare setate de cheia de registry menționată în secțiunea "Rezolvare" pentru anumite aplicații, puteți face acest lucru adăugând următoarea cheie de registry:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions
<<Calea completă a fișierului .exe pentru fișierul>> DWORD 0
C:\MyApp\MyApp.exe DWORD 0
Pentru mai multe informații despre TLS v1.2, consultați Introducere în TLS v1.2.
După ce activați cheia de registry SystemDefaultTlsVersions .NET, are loc un comportament diferit pentru fiecare versiune de Windows, așa cum se arată în următorul tabel.
Windows versiune |
SSL2 Client |
SSL2 Server |
SSL3 Client |
SSL3 Server |
TLS 1.0 Client |
TLS 1.0 Server |
TLS 1.1 Client |
TLS 1.1 Server |
TLS 1.2 Client |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 și Windows Server 2008 SP2 |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Ne/A |
Ne/A |
Ne/A |
Ne/A |
Windows 7 SP1 și Windows Server 2008 R2 SP1 |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dezactivat |
Dezactivat |
Dezactivat |
Dezactivat |
Windows Server 2012 |
Dezactivat |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Windows 8.1 și Windows Server 2012 R2 |
Dezactivat |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Windows 10 |
Dezactivat |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Windows 10 (1511) |
Dezactivat |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Windows 10 (1607) și Windows Server 2016 |
Ne/A |
Ne/A |
Dezactivat |
Dezactivat |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |
Dați clic pe |