.NET Framework versione 3.5 SP1 e versioni precedenti non forniva il supporto per le applicazioni per l'uso delle versioni predefinite di sistema TLS (Transport Layer Security) come protocollo di crittografia. Questo aggiornamento consente l'uso di TLS v1.2 nel .NET Framework 3.5 SP1.
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 KB3154520 è stato sostituito con gli aggiornamenti più recenti di .NET Framework, che contengono tutte le correzioni incluse in precedenza in KB3154520. È 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 nel modo seguente:
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 il Registro di sistema menzionato nel primo paragrafo è impostato e nell'applicazione il valore SslProtocols è impostato su SslProtocols.None, viene scelto il comportamento predefinito del sistema che dipenderà dalla versione del sistema operativo Windows.
Inoltre, quando si modifica il codice dell'applicazione per abilitare il supporto per TLS v1.2 con .NET Framework 3.5 SP1, è consigliabile verificare che nei computer in cui la patch non è distribuita, gestire le eccezioni seguenti generate:-
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 generano un'eccezione quando si chiama 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 in precedenza per applicazioni specifiche, è possibile aggiungerla 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 |