Sintomi
Si supponga di aver eseguito l'aggiornamento a Microsoft .NET Framework 4.6 nel computer. Quando si utilizza un'applicazione che usa SSL 3.0 insieme alle API ServicePointManager o SslStream per connettersi a un server, la connessione non riesce.
Causa
Questo problema si verifica perché il set predefinito di protocolli SSL/TLS utilizzato da ServicePointManager e SslStream è stato modificato.
Valore precedente: Ssl 3.0 | Tls 1.0 | Tls 1.1
Nuovo valore: Tls 1.0 | Tls 1.1 | Tls 1.2
Soluzione alternativa
Per risolvere questo problema, aggiornare il server a Tls 1.0, Tls 1.1 o Tls 1.2 perché SSL 3.0 risulta non sicuro e vulnerabile ad attacchi come POODLE.
Nota Se non è possibile aggiornare il server, usare la classe AppContext per rifiutare esplicitamente questa funzionalità. A questo scopo, usare uno dei metodi seguenti:
A livello di programmazione: deve essere la prima operazione eseguita dall'applicazione perché ServicePointManager verrà inizializzato una sola volta. Usare l'esempio di codice seguente nell'applicazione:
private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);Usando il file AppConfig per l'applicazione: Aggiungere la riga seguente al file Appconfig:
<AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>
Per ulteriori informazioni sui problemi noti in .NET Framework 4.6, vedere Problemi noti di .NET Framework 4.6 .
Altre informazioni
Per altre informazioni sulle modifiche al controllo delle versioni del prodotto e sull'impatto in .NET Framework 4.6, vedere Compatibilità delle applicazioni in .NET Framework 4.6.
Note
La nuova configurazione verrà applicata solo quando l'applicazione ha come destinazione .NET Framework 4.6. .NET Framework 4.5.2 e versioni precedenti non saranno interessati anche se vengono eseguiti in un ambiente .NET Framework 4.6.
Elenco delle API di primo livello interessate:
- HttpClient, HttpWebRequest
- FtpClient
- Smtpclient
- Sslstream
SCH_USE_STRONG_CRYPTO Questo flag verrà usato automaticamente in .NET Framework 4.6 e influisce sul comportamento rimuovendo algoritmi di crittografia e hash non sicuri. Per tutte le piattaforme del sistema operativo precedenti a Windows 10, l'algoritmo RC4 verrà rimosso dall'uso. Da Windows 10 verranno rimossi i seguenti algoritmi aggiuntivi non sicuri: DES, NULL, EXPORT e MD5