2016-06-16 18 views
12

La mia applicazione si connette al server Experian e Experian smetterà presto di supportare TLS 1.0 e TLS 1.1. Tutta la connettività che utilizza HTTPS deve utilizzare TLS Version 1.2.È possibile inviare HttpWebRequest utilizzando TLS1.2 su .NET 4.0 framework

voglio fare qualche ricerca su tale questione e vedere l'invio HttpWebRequest utilizzando TLS 1.2 su .NET 4.0 framework funziona

Se così non fosse, probabilmente ho bisogno di creare un webservice su .NET 4.5 e chiamare i suoi metodi, se lo fa, Non devo niente.

Qualcuno ha già affrontato questo problema?

risposta

25

Sì, lo supporta ma è necessario impostare esplicitamente la versione TLS su ServicePointManager. Basta eseguire questo codice in qualsiasi momento (nello stesso dominio dell'app) prima di effettuare la chiamata a Experian:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 
+0

Sto cercando di implementare quella modifica che hai suggerito e le uniche opzioni di 'SecurityProtocolType' che ho' Ssl3' e 'Tls'. Non ha 'Tls12' – gene

+0

Lo sto usando io stesso per chiamare Experian in modo che Tim abbia ragione. Non è HttpRequest che è il problema, è la versione del framework. – Crowcoder

+0

Fintanto che non si ha nulla a livello di framework più basso e si prende una dipendenza da questo codice, si può semplicemente aumentare la versione del framework e aggiungere quella riga di codice. – Crowcoder

3

Purtroppo no, non è possibile farlo. Tls12 non è stato aggiunto fino a .netfx 4.5 (vedere the documentation). Nota: per eseguire correttamente Windows Server 2008 R2 + o Windows 7+, notare la sezione Applica a su Introducing TLS.

14

ho avuto a che fare con lo stesso problema, mentre l'integrazione di PayPal in un'applicazione legacy, e hanno trovato la seguente soluzione per NET 4.0 che sembra fare il trucco:

ServicePointManager.Expect100Continue = true; 
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 
ServicePointManager.DefaultConnectionLimit = 9999; 

Fondamentalmente la soluzione è direttamente assegnare la porta per TLS 1.2.

Tutto il credito va al commentatore allo CodeProject.

+0

Quella linea magica ha fatto il trucco 'ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072' Grazie mille! –

Problemi correlati