Esiste l’implementazione .NET di TLS 1.2?

Da quando ho scoperto che RFC 5425 richiede l’uso di TLS 1.2, e che .NET non lo supporta ancora, mi chiedo se ci sia qualche implementazione, possibilmente open source, del protocollo TLS 1.2, come definito in RFC 5246.

Grazie.

Ho appena scoperto che .NET Framework 4.5 ora supporta TLSv1.2
http://msdn.microsoft.com/en-us/library/system.security.authentication.sslprotocols(v=vs.110).aspx

Sì, anche se devi triggersre manualmente TLS 1.2 su System.Net.ServicePointManager.SecurityProtocol

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; // comparable to modern browsers var response = WebRequest.Create("https://www.howsmyssl.com/").GetResponse(); var body = new StreamReader(response.GetResponseStream()).ReadToEnd(); 

Il tuo cliente utilizza TLS 1.2, la versione più moderna del protocollo di crittografia


Fuori dagli schemi, WebRequest utilizzerà TLS 1.0 o SSL 3 .

Il tuo client utilizza TLS 1.0, che è molto vecchio, probabilmente suscettibile all’attacco BEAST e non ha le migliori suite di crittografia disponibili su di esso. Aggiunte come AES-GCM e SHA256 per la sostituzione di MD5-SHA-1 non sono disponibili per un client TLS 1.0 e per molte più moderne suite di crittografia.

È ansible utilizzare l’impostazione del Registro di sistema SchUseStrongCrypto per richiedere a tutte le applicazioni .NET di utilizzare TLS 1.2 anziché 1.0 per impostazione predefinita.

 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 

Ho risolto il problema passando al più recente .Net Framework. Quindi il tuo framework di destinazione imposta il tuo protocollo di sicurezza.

quando hai questo in Web.config

    

lo otterrai per impostazione predefinita:

 ServicePointManager.SecurityProtocol = Ssl3 | Tls 

quando hai questo in Web.config

    

lo otterrai per impostazione predefinita:

 ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls 

Se si utilizzano versioni precedenti di .NET Framework, il supporto per TLS 1.2 è disponibile nel nostro prodotto SecureBlackbox in entrambi i componenti client e server. SecureBlackbox contiene la sua implementazione di tutti gli algoritmi, quindi non importa quale versione del framework basato su .NET usi (incluso .NET CF) – avrai TLS 1.2 con le ultime aggiunte in tutti i casi.

Si noti che SecureBlackbox non aggiunge magicamente TLS 1.2 alle classi del framework, ma è necessario utilizzare esplicitamente classi e componenti SecureBlackbox.

Basta scaricare questa chiave di registro ed eseguirla. Aggiungerà la chiave necessaria al registro del framework .NET. Puoi avere maggiori informazioni a questo link . Cerca “Opzione 2” in “.NET 4.5 – 4.5.2”.

Il file reg aggiunge quanto segue al registro:

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 

Questa è la parte della pagina utile in caso di interruzione:

“.. abilitare TLS 1.2 per impostazione predefinita senza modificare il codice sorgente impostando il valore SchOrseStrongCrypto DWORD nelle seguenti chiavi del Registro di sistema su 1, creando se non esistono:” HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ v4.0.30319 ” e “HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v4.0.30319″ Sebbene il numero di versione in quelle chiavi di registro sia 4.0.30319, anche i framework .NET 4.5, 4.5.1 e 4.5.2 utilizzano questi valori. le chiavi di registro, tuttavia, abiliteranno TLS 1.2 per impostazione predefinita in tutte le applicazioni .NET 4.0, 4.5, 4.5.1 e 4.5.2 installate su tale sistema, pertanto è consigliabile verificare questa modifica prima di distribuirla ai server di produzione. è disponibile anche come file di importazione del Registro di sistema, tuttavia questi valori non influiscono sulle applicazioni .NET che impostano il valore System.Net.ServicePointManager.SecurityProtocol. ”

L’ultima versione di SSPI (in bundle con Windows 7) ha un’implementazione di TLS 1.2, che può essere trovata in schannel.dll

.NET Framework 4.6 utilizza TLS 1.2 per impostazione predefinita.

Inoltre, solo l’applicazione host dovrebbe essere in .NET 4.6, le librerie di riferimento possono rimanere nelle versioni precedenti.

È ansible abilitare TLS 1.2 in IIS seguendo queste istruzioni . Presumo che ciò sarebbe sufficiente se si dispone di un’applicazione basata su ASP.NET che viene eseguita su IIS, anche se sembra che non soddisfi realmente le proprie esigenze.

come accennato qui puoi semplicemente aggiungere questa linea

 ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;