Qual è il protocollo di sicurezza predefinito per la comunicazione con server che supportano fino a TLS 1.2
? Per .NET
impostazione predefinita, sceglierò il protocollo di sicurezza più elevato supportato sul lato server o devo aggiungere esplicitamente questa riga di codice:
System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
C'è un modo per cambiare questo valore predefinito, oltre a una modifica del codice?
Infine, .NET 4.0
supporta solo fino a TLS 1.0
? cioè devo aggiornare i progetti client a 4.5 per supportare TLS 1.2
.
La mia motivazione è quella di rimuovere il supporto SSLv3
sul lato client anche se il server lo supporta (ho già uno script PowerShell per disabilitarlo nel registro macchina) e per supportare il protocollo TLS più alto supportato dal server.
Aggiornamento:
guardando la ServicePointManager
classe in .NET 4.0
non vedo valori enumerati per TLS 1.0
e 1.1
. In entrambi .NET 4.0/4.5
, il valore predefinito è SecurityProtocolType.Tls|SecurityProtocolType.Ssl3
. Si spera che questo valore predefinito non si interrompa disabilitando SSLv3
nel registro.
Tuttavia, ho deciso che devo aggiornare tutte le app .NET 4.5
e aggiungere esplicitamente SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
comunque a tutto il codice di bootstrap di tutte le applicazioni.
Ciò renderà richieste in uscita a varie API e servizi per non effettuare il downgrade SSLv3
e dovrebbe selezionare il livello più alto di TLS
.
Questo approccio sembra ragionevole o eccessivo? Ho molte applicazioni da aggiornare e voglio provarle in futuro poiché ho sentito che TLS 1.0
potrebbero essere deprecate nel prossimo futuro da alcuni provider.
Come client che effettua richieste in uscita alle API, la disabilitazione di SSL3 nel registro ha anche un effetto nel framework .NET? Vedo per impostazione predefinita, TLS 1.1 e 1.2 non sono abilitati, dobbiamo abilitarlo tramite il registro? RE http://support.microsoft.com/kb/245030 .
Dopo un po 'di indagine, credo che le impostazioni del registro non avranno alcun effetto poiché si applicano a IIS (sottochiave del server) e ai browser (sottochiave del client).
Spiacente, questo post si è trasformato in più domande, seguite da risposte "forse".