Condividi tramite


Mitigazione: protocolli TLS

A partire da .NET Framework 4.6, le System.Net.ServicePointManager classi e System.Net.Security.SslStream possono usare uno dei tre protocolli seguenti: Tls1.0, Tls1.1 o Tls 1.2. Il protocollo SSL 3.0 e la crittografia RC4 non sono supportati.

Impatto

Questa modifica influisce su:

Mitigazione

La mitigazione consigliata consiste nell'aggiornare l'app lato server a Tls1.0, Tls1.1 o Tls 1.2. Se ciò non è fattibile o se le app client non funzionano, è possibile usare la classe AppContext per rifiutare esplicitamente questa funzionalità in uno dei due modi seguenti:

  • A livello di codice, usando un frammento di codice simile al seguente:

    const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching";
    const string DontEnableSchUseStrongCryptoName = @"Switch.System.Net.DontEnableSchUseStrongCrypto";
    AppContext.SetSwitch(DisableCachingName, true);
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, true);
    
    Const DisableCachingName As String = "TestSwitch.LocalAppContext.DisableCaching"
    Const DontEnableSchUseStrongCryptoName As String = "Switch.System.Net.DontEnableSchUseStrongCrypto"
    AppContext.SetSwitch(DisableCachingName, True)
    AppContext.SetSwitch(DontEnableSchUseStrongCryptoName, True)
    

    Poiché l'oggetto ServicePointManager viene inizializzato una sola volta, la definizione di queste impostazioni di compatibilità deve essere la prima operazione eseguita dall'applicazione.

  • Aggiungendo la riga seguente alla <sezione runtime> del file app.config:

    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchUseStrongCrypto=true"/>  
    

Si noti, tuttavia, che rifiutare esplicitamente il comportamento predefinito non è consigliato, poiché rende l'applicazione meno sicura.

Vedere anche