.NET Framework versione 2.0 Service Pack 2 (SP2) e versioni precedenti hanno codificato l'uso di Secure Sockets Layer (SSL) v3.0 e Transport Layer Security (TLS) v1.0 per impostazione predefinita, a meno che non sia stata specificata una versione di protocollo diversa dall'applicazione .NET. Questo aggiornamento per .NET Framework 2.0 SP2 in Windows Vista SP2 e Windows Server 2008 SP2 aggiunge l'opzione per usare le impostazioni predefinite SSL e TLS fornite dal sistema operativo.
Nota : questo contenuto è stato reso disponibile in Windows Update. Per ottenere il contenuto, eseguire Windows update per trovare gli aggiornamenti .NET Framework più recenti. Se il sistema è completamente aggiornato tramite Windows, non è necessario eseguire altre azioni.
Risoluzione
Scaricare le informazioni
L'aggiornamento rapido corrispondente a KB3154517 è stato sostituito con gli aggiornamenti più recenti di .NET Framework, che contengono tutte le correzioni incluse in precedenza in KB3154517. È consigliabile installare gli aggiornamenti più recenti di .NET Framework. In questo settore sono stati apportati i miglioramenti seguenti:
-
Le chiavi del Registro di sistema seguenti possono essere impostate in modo da usare le impostazioni predefinite del sistema operativo per SSL e TLS invece delle impostazioni predefinite .NET Framework hardcoded per un'applicazione gestita in esecuzione nel computer.
-
Per i sistemi operativi a 64 bit:[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 -
Per i sistemi operativi a 32 bit:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Nota Se l'applicazione ha impostato ServicePointManager.SecureProtocol nel codice o tramite file di configurazione su un valore specifico o usa le API SslStream.AuthenticateAs* per specificare un'enumerazione SslProtocols specifica, il comportamento dell'impostazione del Registro di sistema non si verifica.
-
-
Inoltre, è stata aggiunta l'enumerazione SslProtocolsExtensions che è possibile usare come opzione per l'impostazione di TLS v1.2, TLS v1.1 e impostazioni predefinite del sistema operativo per la proprietà ServicePointManager.SecurityProtocol per la destinazione di .NET Framework versione 2.0 SP2. Per informazioni su come usare le estensioni, vedere la sezione Indicazioni per gli sviluppatori.
Nota Windows Vista SP2 e Windows Server 2008 SP2 non supportano le versioni del protocollo TLS (Transport Layer Security) più recenti rispetto alla 1.0. Le applicazioni .NET Framework 2.0 SP2 gestite in esecuzione in Windows Vista SP2 o Windows Server 2008 SP2 non possono usare TLS 1.2 o TLS 1.1, anche se questi protocolli sono impostati nella proprietà ServicePointManager.SecurityProtocol.
Per altre informazioni su come scaricare i file di supporto Microsoft, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
119591 Come ottenere i file di supporto Microsoft dai servizi online Microsoft ha analizzato questo file alla ricerca di virus. Microsoft ha utilizzato il software antivirus più recente disponibile al momento della data di pubblicazione del file. Il file viene salvato su server con un livello di sicurezza avanzata che impedisce modifiche del file non autorizzate.
Guida per gli sviluppatori
La definizione delle nuove estensioni è nei file seguenti:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ utilizzo di System.Security.Authentication; classe statica pubblica SecurityProtocolTypeExtensions { public const SecurityProtocolType Tls12 = (SecurityProtocolType)SslProtocolsExtensions.Tls12; public const SecurityProtocolType Tls11 = (SecurityProtocolType)SslProtocolsExtensions.Tls11; public const SecurityProtocolType SystemDefault = (SecurityProtocolType)0; } } -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{ Classe statica pubblica SslProtocolsExtensions { public const SslProtocols Tls12 = (SslProtocols)0x00000C00; public const SslProtocols Tls11 = (SslProtocols)0x00000300; } }
Per includere il supporto per TLS v1.2, includere i file di origine nel progetto e quindi impostare la versione del protocollo usando i metodi seguenti:
-
Le applicazioni che usano API basate su ServicePointManager possono impostare il protocollo usando quanto segue:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Le applicazioni che usano l'overload SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) possono impostare il valore SslProtocols come SslProtocolsExtensions.Tls12.
Se l'impostazione del Registro di sistema menzionata nel primo paragrafo è impostata e il valore SslProtocols nell'applicazione è impostato su SslProtocols.None, il comportamento predefinito del sistema scelto dipenderà dalla versione Windows.
Inoltre, quando si modifica il codice dell'applicazione per abilitare il supporto per TLS v1.2 con .NET Framework 3.5 SP1, assicurarsi di risolvere le eccezioni seguenti nei computer in cui la patch non è distribuita:-
Se l'aggiornamento rapido non è installato, le API basate su ServicePointManager (HTTP, FTP, SMTP) genereranno "System.NotSupportedException: Il protocollo di sicurezza richiesto non è supportato" quando l'applicazione chiama ServicePointManager.SecurityProtocol per impostare il nuovo valore.
-
Se l'aggiornamento rapido non è installato, le API basate su SslStream genereranno eccezioni quando chiamano una delle API AuthenticateAs*:
System.ArgumentException: il valore specificato non è valido nell'enumerazione 'SslProtocolType'.
Nome parametro: sslProtocolType
Nota Solo per SslStream, una combinazione di Tls12, Tls11 e uno qualsiasi degli attuali Tls, Ssl3, Ssl2 (ad esempio: Tls12 | Tls11 | Tls) verrà automaticamente declassato ai protocolli esistenti (ad esempio: Tls) in un sistema senza patch. Si connetterà a Tls senza generare l'eccezione.
Ulteriori informazioni
Per abilitare TLS v1.1 o v1.2 come impostazioni predefinite del sistema operativo, seguire le istruzioni in https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Nota Tls v1.1 e v1.2 non sono disponibili in Windows Vista o Windows Server 2008. Se è necessario disabilitare le impostazioni predefinite del sistema operativo impostate dalla chiave del Registro di sistema menzionata nella sezione "Risoluzione" per applicazioni specifiche, è possibile farlo aggiungendo la chiave del Registro di sistema seguente:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Percorso completo del .exe per il file>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Per altre informazioni su TLS v1.2, vedere Introduzione a TLS v1.2. Dopo aver abilitato la chiave del Registro di sistema SystemDefaultTlsVersions .NET, si verifica un comportamento diverso per ogni versione di Windows, come illustrato nella tabella seguente.
Windows versione |
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 e Windows Server 2008 SP2 |
Disattivato |
In |
In |
In |
In |
In |
N/D |
N/D |
N/D |
N/D |
Windows 7 SP1 e Windows Server 2008 R2 SP1 |
Disattivato |
In |
In |
In |
In |
In |
Disattivato |
Disattivato |
Disattivato |
Disattivato |
Windows Server 2012 |
Disattivato |
Disattivato |
In |
In |
In |
In |
In |
In |
In |
In |
Windows 8.1 e Windows Server 2012 R2 |
Disattivato |
Disattivato |
In |
In |
In |
In |
In |
In |
In |
In |
Windows 10 |
Disattivato |
Disattivato |
In |
In |
In |
In |
In |
In |
In |
In |
Windows 10 (1511) |
Disattivato |
Disattivato |
In |
In |
In |
In |
In |
In |
In |
In |
Windows 10 (1607) e Windows Server 2016 |
N/D |
N/D |
Disattivato |
Disattivato |
In |
In |
In |
In |
In |
In |