tls connessione ssl

Tls e problemi di connessione

L’utilizzo del protocollo SSL è un requisito fondamentale per le applicazioni web.

SSL è l’acronimo di “Secure Sockets Layer” (Livello di socket sicuri), uno standard che garantisce la sicurezza di una connessione e protegge i dati scambiati fra due sistemi, impedendo di leggere e modificare le informazioni trasferite. Questa tecnologia si è diffusa in tutti quei portali che necessitano di trasferire dati sensibili (come numero di carta di credito, password, ecc.) e si sta diffondendo anche su siti “tradizionali”.

TLS (Transport Layer Security, sicurezza del livello di trasporto) è una versione aggiornata e più sicura di SSL,  e i certificati utilizzati da HTTPS ne fanno un largo uso, utilizzando la crittografia.

Nell’integrazione di applicazioni .NET con API di terze parti si può ricevere il seguente errore:

“An error occurred while making the HTTP request to https://<API endpoint>. This could be due to the fact that the server certificate is not configured properly with HTTP.SYS in the HTTPS case. This could also be caused by a mismatch of the security binding between the client and the server.” Inner exception was “Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.

Questo tipo di messaggio, non molto esplicativo, spesso nasconde un differente configurazione del livello di sicurezza tra client e server.

Non tutte le connessioni HTTPS sono uguali!

In particolare, il problema riguarda la diversa versione del protocollo TLS, che si occcupa della crittografia delle informazioni. Al momento della scrittura di questo post, la versione standard è la TLS 1.2. Tutte le applicazioni che utilizzano una versione inferiore di TLS sono considerate insicure.

Il framework 4 utilizza come standard TLS 1.1: ecco quindi una possibile origine del messaggio di errore precedente, mentre nella versione 4.6.1 lo standard predefinito è TLS 1.2.

Fortunatamente è possibile utilizzare il protocollo TLS 1.2 senza dover aggiornare le applicazioni alle nuove versioni del framework.

  • .NET 4.6 e versioni successive . Non è necessario eseguire alcun lavoro aggiuntivo per supportare TLS 1.2, è supportato per impostazione predefinita.
  • .NET 4.5. TLS 1.2 è supportato, ma non è un protocollo predefinito. E’ necessario abilitarlo, inserendo all’interno del file global.asax il seguente codice:

  • .NET 4.0. TLS 1.2 non è supportato, ma se sul sistema è installato .NET 4.5 (o successivo), è possibile optare per TLS 1.2 anche se il framework dell’applicazione non lo supporta. In questo caso è necessario aggiungere all’interno del file global.asax la seguente riga di codice:

  • .NET 3.5 o inferiore. TLS 1.2 non è supportato  e non vi è alcuna soluzione alternativa. L’unica soluzione rimane quella di aggiornare l’applicazione ad un framework superiore.

 

Pubblicato da

Andrea Merlin

Laureato in informatica, diversi corsi di specializzazione legati allo Sviluppo Software e alla Computer forensics. Appassionato di nuove tecnologie, amo la programmazione, la Business Intelligence e tematiche legate alla Privacy.Sempre alla ricerca di nuove idee, stimoli … e progetti da seguire!Amo trascorrere il tempo libero in Val Borbera, un piccolo angolo del Piemonte, in provincia di Alessandria.