Linstallazione di un certificato Secure Sockets Layer (SSL) sul vostro sito WordPress permette di utilizzare HTTPS per garantire connessioni sicure. Purtroppo, ci sono diverse cose che possono andare storte nel processo di conferma di un certificato SSL valido e di connessione tra il server del tuo sito e il browser di un visitatore.
Se avete incontrato un messaggio di errore “Handshake SSL Non Riuscito” (“SSL Handshake Failed”) e siete confusi sul suo significato, non siete soli. È un errore comune che da solo non ti dice molto. Anche se può essere un’esperienza frustrante, la buona notizia è che ci sono semplici passi da compiere per risolvere il problema.
In questo post spiegheremo cos’è l’errore Handshake SSL Non Riuscito e cosa lo causa. Poi vi forniremo diverse soluzioni per correggerlo.
Cominciamo!
Introduzione agli Handshake SSL
Prima di andare ad analizzare le cause del fallimento di un handshake TLS o SSL, è utile capire di cosa si tratta. Secure Sockets Layer (SSL) e Transport Layer Security (TLS) sono protocolli utilizzati per autenticare i trasferimenti di dati tra server e sistemi esterni come i browser.
I certificati SSL sono necessari per proteggere il vostro sito web utilizzando HTTPS. Non approfondiremo troppo la differenza tra TLS e SSL, dato che si tratta di una differenza minore. I termini sono spesso utilizzati in modo intercambiabile, quindi per semplicità parleremo di “SSL” ma ci riferiremo ad entrambi.
Un handshake SSL è il primo passo per stabilire una connessione HTTPS. Per autenticare e stabilire la connessione, il browser dell’utente e il server del sito web devono passare attraverso una serie di controlli (handshake), che stabiliscono i parametri di connessione HTTPS.
Spieghiamo meglio: il client (tipicamente il browser) invia una richiesta di connessione sicura al server. Dopo l’invio della richiesta, il server invia una chiave pubblica al computer e verifica tale chiave rispetto a una lista di certificati. Il computer genera quindi una chiave e la cripta, utilizzando la chiave pubblica inviata dal server.
Per farla breve, senza handshake SSL non sarà possibile effettuare una connessione sicura. Questo può rappresentare un notevole rischio per la sicurezza. In più, ci sono molte parti in movimento coinvolte nel processo.
Ciò significa che ci sono molte possibilità che qualcosa vada storto e causi un fallimento dell’handshake.
Capire la Causa dell’Errore Handshake SSL Non Riuscito
Un errore 525 o Handshake SSL Non Riuscito significa che il server e il browser non sono stati in grado di stabilire una connessione sicura. Questo può succedere per una serie di motivi.
Generalmente, un errore 525 significa che l’handshake SSL tra un dominio che utilizza Cloudflare e il server web di origine è fallita:
Tuttavia, è anche importante capire che gli errori SSL possono verificarsi sia sul lato client che sul lato server. Tra le cause comuni degli errori SSL sul lato client vi sono:
- La data o l’ora sbagliata sul dispositivo client.
- Un errore nella configurazione del browser.
- Una connessione che viene intercettata da una terza parte.
Alcune cause lato server includono:
- Un disallineamento della suite di cifratura.
- Un protocollo utilizzato dal client che non è supportato dal server.
- Un certificato incompleto, non valido o scaduto.
In genere, se la SSL handshake fallisce, il problema può essere attribuito a un errore sul sito web o sul server nelle configurazioni SSL.
Come Correggere l’Errore SSL Handshake Failed (5 Soluzioni)
Ci sono diverse possibili cause dietro l’errore “SSL Handshake Failed”. Quindi non c’è una risposta semplice quando ci si trova a doverlo risolvere.
Per fortuna, ci sono una diversi metodi che si possono seguire per cominciare ad analizzare i potenziali problemi e risolverli uno per uno. Diamo un’occhiata a cinque possibili strategie da seguire per cercare di risolvere l’errore SSL Handshake Failed.
1. Aggiornare la Data e l’Ora del Sistema
Cominciamo con una delle cause più improbabili, ma che è incredibilmente facile da correggere se è questo il problema: l’orologio del vostro computer.
Se il vostro sistema utilizza la data e l’ora sbagliate, questo potrebbe interrompere l’handshake SSL. Quando l’orologio di sistema è diverso dall’ora effettiva, ad esempio, se è impostato troppo avanti nel futuro, può interferire con la verifica del certificato SSL.
L’orologio del computer potrebbe essere stato impostato in modo errato per un errore umano o semplicemente a causa di un errore nelle impostazioni. Qualunque sia il motivo, è una buona idea controllare e assicurarsi che l’ora del sistema sia corretta, e aggiornarla nel caso in cui non lo sia.
Naturalmente, se l’orologio mostra le informazioni corrette, è lecito supporre che questa non sia l’origine del problema “SSL Handshake Failed”.
2. Controllare il Certificato SSL è Valido
Sui certificati SSL sono riportate le date di scadenza, per garantire che le informazioni di convalida siano accurate. In genere, la validità di questi certificati va da sei mesi a due anni.
Se un certificato SSL viene revocato o è scaduto, il browser lo rileva e non potrà completare l’handshake SSL. Se è passato più di un anno o giù di lì da quando è stato installato un certificato SSL sul vostro sito web, potrebbe essere il momento di riemetterlo.
Per visualizzare lo stato del vostro certificato SSL, potete utilizzare uno strumento di verifica dei certificati SSL come quello offerto da Qualys:
Questo strumento è affidabile e gratuito. Tutto quello che dovete fare è inserire il vostro nome di dominio nel campo Hostname, e poi cliccare su Submit. Una volta che il checker ha finito di analizzare la configurazione SSL del vostro sito, vi presenterà alcuni risultati:
In questa pagina potete scoprire se il vostro certificato è ancora valido e vedere se è stato revocato per un qualsiasi motivo.
In entrambi i casi, l’aggiornamento del certificato SSL dovrebbe risolvere l’errore di handshake (ed è vitale per mantenere sicuri il vostro sito e il vostro negozio WooCommerce).
3. Configurare il Browser per il Supporto degli Ultimi Protocolli SSL/TLS
A volte il modo migliore per determinare la causa di un problema alla radice è seguire la procedura di eliminazione. Come abbiamo accennato in precedenza, l’errore di handshake SSL può spesso verificarsi a causa di un errore di configurazione del browser.
Il modo più rapido per determinare se il problema è un certo browser è provare a passare ad un altro browser. Questo può almeno aiutarvi a restringere il campo di ricerca. Potete anche provare a disattivare tutti i plugin e a ripristinare le impostazioni predefinite del browser.
Un altro potenziale problema legato al browser è un errore di protocollo. Ad esempio, se il server supporta solo TLS 1.2, ma il browser è configurato solo per TLS 1.0 o TLS 1.1, non è disponibile un protocollo supportato da entrambi. Questo porterà inevitabilmente ad un errore di handshake SSL.
Il modo in cui verificare se è questo il problema varia a seconda del browser che si utilizza. Come esempio, analizzeremo la procedura in Chrome. Per prima cosa, aprite il vostro browser e andate su Impostazioni > Avanzate. Questo espanderà una serie di opzioni di menu.
Nella sezione Sistema, fate clic su Apri le impostazioni proxy del computer:
Vi si aprirà una nuova finestra. Quindi selezionate la scheda Avanzate. Nella sezione Sicurezza, spuntate per vedere se la casella accanto a Usa TLS 1.2 è selezionata. In caso contrario, selezionare questa opzione:
Si consiglia anche di deselezionare le caselle per SSL 2.0 e SSL 3.0.
Lo stesso vale per TLS 1.0 e TLS 1.1, poiché sono in fase di graduale eliminazione. Quando avete finito, fate clic sul pulsante OK e verificate se l’errore di handshake è stato risolto.
Si noti che se si utilizza Apple Safari o Mac OS non c’è un’opzione per attivare o disattivare i protocolli SSL. TLS 1.2 è abilitato automaticamente di default. Se utilizzate Linux, potete fare riferimento alla guida Red Hat sull’irrigidimento del TLS.
4. Verificare che il Server sia Configurato per Supportare l’SNI
È anche possibile che l’errore di handshake SSL sia causato da una configurazione impropria della Server Name Indication (SNI). L’SNI è ciò che consente a un server web di ospitare in modo sicuro più certificati TLS per un indirizzo IP.
Ogni sito web su un server ha il proprio certificato. Tuttavia, se il server non è abilitato per l’SNI, questo può portare ad un errore di handshake SSL, perché il server potrebbe non sapere quale certificato presentare.
Ci sono diversi modi per verificare se un sito richiede SNI. Un’opzione è quella di utilizzare l’SSL Server Test di Qualys, di cui abbiamo parlato nella sezione precedente. Inserite il nome di dominio del vostro sito e poi fate clic sul pulsante Submit.
Nella pagina dei risultati, cercate il messaggio “Questo sito funziona solo nei browser con supporto SNI”:
Un altro approccio per verificare se un server sta utilizzando l’SNI è quello di sfogliare i nomi dei server nel messaggio ‘ClientHello’. Si tratta di una procedura più tecnica, ma può offrire molte informazioni.
Bisogna cercare un campo ‘nome_server’ nell’intestazione estesa Hello, per vedere se sono state presentate le certificazioni corrette.
Se avete familiarità con l’utilizzo di strumenti come il toolkit OpenSSL e Wireshark, potreste trovare preferibile questo metodo. Potete utilizzare openssl s_client
con o senza l’opzione -servername
:
# without SNI
$ openssl s_client -connect host:port
# use SNI
$ openssl s_client -connect host:port -servername host
Se ottenete due certificati diversi con lo stesso nome, significa che l’SNI è supportato e configurato correttamente.
Tuttavia, se l’output nei certificati restituiti è diverso, o la chiamata senza SNI non può stabilire una connessione SSL, ciò significa che l’SNI è richiesto ma non correttamente configurato. Per risolvere questo problema potrebbe essere necessario passare ad un indirizzo IP dedicato.
5. Assicurarsi che le Suite di Cifrartura Corrispondano
Se non siete ancora riusciti a identificare la causa del fallimento dell’handshake SSL, allora potrebbe voler dire che è dovuto a una mancata corrispondenza delle cipher suite. Nel caso in cui non si abbia familiarità con il termine, per “suite di cifratura” si intende un insieme di algoritmi, compresi quelli per lo scambio di chiavi, la cifratura di massa e il codice di autenticazione dei messaggi, che possono essere utilizzati per la sicurezza delle connessioni di rete SSL e TLS.
Se le suite di cifratura utilizzate da un server non supportano o non corrispondono a quanto utilizzato da Cloudflare, può verificarsi un errore “SSL Handshake Failed”.
Se bisogna capire se c’è un disallineamento della suite di cifratura, l’SSL Server Test di Qualys si dimostra ancora una volta uno strumento utile.
Quando inserite il vostro dominio e fate clic su Submit, vedrete una pagina di analisi sintetica. Potete trovare le informazioni sul cifratura nella sezione Cipher Suite:
Potete utilizzare questa pagina per scoprire quali cifrature e protocolli suno supportati dal server. Dovrete cercare quelli che mostrano lo stato “weak”. Inoltre, questa sezione descrive anche gli algoritmi specifici per le suite di cifratura.
Per correggere questo problema, potete confrontare i risultati con ciò che supporta il vostro browser, utilizzando lo strumento SSL/TLS Capabilities of Your Browser. Per maggiori informazioni e indicazioni sulle suite di cifratura, consigliamo di consultare anche la guida ComodoSSLStore.
Riepilogo
Uno dei tipi più sconcertanti ma comuni dei problemi legati all’SSL è l’errore “SSL Handshake Failed”. Rimuovere questo errore può essere stressante, poiché ha molte possibili cause, compresi problemi sia lato client che lato server.
Tuttavia, ci sono alcune soluzioni praticabili che possono essere utilizzate per identificare il problema e risolverlo. Qui ci sono cinque metodi per risolvere l’errore SSL Handshake Failed:
- Aggiornare la data e l’ora del sistema.
- Controllare se il vostro certificato SSL è valido (e riemetterlo se necessario).
- Configurare il browser in modo che supporti le ultime versioni TLS/SSL.
- Verificare che il server sia configurato correttamente per il supporto di SNI.
- Assicurarsi che le suite di cifratura corrispondano.