Wordpress
Wordpress

Errore Rest API e Loopback su wordpress: come risolvere l’errore cURL 35

Quando cambiamo hosting possiamo imbatterci in diversi errori: Alcuni sono più semplici da risolvere, altri più difficili.

L’errore di cui parleremo oggi (errore curl 35 su WordPress) non è molto comune, e capita ai siti web che utilizzano un sistema operativo Linux CentOs 7.9.2009 col pannello Plesk. Hai riscontrato anche tu questo errore? Leggi l’articolo per risolverlo velocemente!

errore curl 35 wordpress rest api e loopback

Cos’è cURL?

Il cURL, acronimo di client URL, è uno strumento a riga di comando che gli sviluppatori utilizzano per trasferire dati da e verso un server.

Fondamentalmente, un cURL consente di parlare con un server specificando la posizione (sotto forma di URL) e i dati che si desidera inviare.

Il comando più elementare di cURL è  curl http://esempio.it

Il comando cURL è seguito dall’URL da cui si desidera recuperare alcuni tipi di dati. In questo caso, restituisce il sorgente html di “esempio.it”.

cURL è quindi composto da due parti: libcurl, che è la libreria C che fa tutta la magia, e il programma cURL CLI.

I linguaggi di programmazione come PHP includono la libreria libcurl come modulo, consentendo loro di fornire le funzionalità di cURL in modo nativo.

La libreria libcurl è una libreria open source per il trasferimento di URL e supporta un’ampia gamma di protocolli, tra cui HTTP e HTTPS, e funzionano su quasi tutte le piattaforme: Ciò rende i cURL ideali per testare la comunicazione da quasi tutti i dispositivi (purché dotati di linea di comando e connettività di rete), da un server locale alla maggior parte dei dispositivi edge.

Praticamente ogni protocollo che si possa immaginare – cURL lo supporta.

cURL esiste dal 1998 e compirà 25 anni nel 2023 (un quarto di secolo!) anche se, nonostante l’età, è ancora molto potente e moderno ed è in fase di sviluppo molto attivo, senza segni di rallentamento. 

Finora abbiamo analizzato cURL, ma i binding di cURL sono disponibili anche per la maggior parte dei linguaggi, compreso il PHP. Se si utilizza un software PHP che effettua richieste di rete, molto probabilmente si stanno utilizzando delle richieste via cURL.

cURL e API su wordpress, come interagiscono?

WordPress utilizza la classe WP_Http per le richieste di rete, che a sua volta si appoggia alla libreria Requests. Ciò significa che tutti gli utility methods HTTP come wp_remote_get() e wp_remote_post() utilizzano questo tipo di richieste.

Per farla semplice gli aggiornamenti di WordPress, i download dei plugin, gli aggiornamenti dei plugin e praticamente tutte le funzionalità di upload/download nel nucleo di WordPress utilizzano richieste di cURL.

Quindi WordPress usa i cURL per inviare richieste API. Ogni richiesta è generalmente composta da quattro parti principali:

  • Un endpoint, ovvero l’indirizzo (URL) a cui inviare la richiesta.
  • Un metodo HTTP: I metodi più comuni sono GET, POST, PUT e DELETE.
    • GET viene utilizzato per recuperare una risorsa da un server. Può trattarsi di un file, di informazioni o di un’immagine.
    • POST è usato per inviare informazioni al server.
    • PUT può essere usato per creare o aggiornare una risorsa, ad esempio per creare o aggiornare un record in un database o per aggiornare il contenuto di un file.
    • DELETE è usato per cancellare una risorsa, ad esempio una voce del database.
  • Un header, che contengono metadati sulla richiesta, come il tipo di contenuto, l’agente utente e così via.
  • Il body, che è il corpo del messaggio e contiene i dati che vogliamo inviare, se ce ne sono. In genere, il body viene utilizzato con i metodi POST e PUT.

L’errore cURL 35 su WordPress

Nel caso che stiamo analizzando, WordPress ci da, nella schermata di Salute del Sito (Site Health), ben due errori critici:

  • Il primo dice LE REST API HANNO INCONTRATO UN ERRORE
  • e il secondo recita IL TUO SITO NON HA POTUTO COMPLETARE UNA RICHIESTA DI LOOPBACK.

Entrambe gli avvisi fanno riferimento a questo fantomatico errore cURL 35.

Come abbiamo appena visto, se è coinvolto il parametro cURL, significa che c’è qualcosa durante la richiesta che non funziona. Ma quale richiesta?

Effettuando una ricerca sul web troviamo diverse soluzioni, ma un unico punto in comune:

Errore cURL (35): Errore di connessione SSL. ovvero c’è un problema in qualche punto dell’handshake SSL/TLS. In breve, il codice di errore cURL 35 indica un errore di connessione SSL.

L’errore potrebbe essere dovuto a un pacchetto cURL non aggiornato, a errori di connessione o a una mancata corrispondenza di versione tra il PHP cURL e il protocollo SSL del server finale.

In diversi forum viene suggerito di aggiornare la versione di cURL (che su CentOs 7 è datata, 7.29.0) sui server.

Purtroppo però la versione cURL non può essere aggiornata su WordPress perchè, molto semplicemente, non è ospitata lì. WordPress infatti “eredita” la versione cURL dall’installazione PHP. Ma l’estensione cURL del PHP altro non è che un collegamento alla libreria libcurl che è installata sul server, quindi l’unica opzione che avremmo è cambiare server.

Per fortuna, però, non è tutto perduto!

Risolvere l’errore cUrl 35 su WordPress facilmente

Nel caso specifico, il bug viene causato dal fatto che alcuni server configurano di default solo la versione più recente (1.3) del TLS (Transport Security Layer). Probabilmente il server che ospita il sito web su cui riscontrate questo problema, è uno di quelli.

L’errore cURL 35 di WordPress si risolve facilmente abilitando entrambe le versioni del protocollo TLS: la 1.2 e la 1.3. Vi raccomando di lasciare disabilitate le versioni dalla 1.1 in giù, ormai considerate insicure e quindi deprecate.

I processi automatici di WordPress (come le API call – che utilizzano le richieste via cURL) infatti, si appoggiano sul protocollo TLS 1.2, e non sono ancora stati aggiornati (n.d.r. Dicembre 2022) all’utilizzo della versione 1.3.

Verifica qui se hai abilitato solo la versione 1.3 oppure entrambe le versioni!

website tls 1.3 1.2

Risoluzione manuale dell’errore

Colleghiamoci al pannello di controllo Plesk ed entriamo nel terminale SSH

terminale SSH plesk

Una volta nel terminale, non dobbiamo fare altro che digitare il seguente comando per abilitare anche la versione TLS 1.2

				
					plesk bin server_pref -u -ssl-protocols 'TLSv1.2 TLSv1.3'
				
			

L’abilitazione di questa versione può provocare vulnerabilità sul nostro sito web. Preveniamole andando nell’estensione SSL It! di Plesk, e attiviamo la voce “Versioni e cifre TLS di Mozilla” seguendo i passaggi sottostanti.

  1. Vai a Estensioni > scheda “Le mie estensioni “> fai clic su Apri (accanto a SSL It!)
  2. In Versioni e cifre TLS di Mozilla, attiva il pulsante.
  3. Seleziona “Intermedio (raccomandato)“, e poi fai clic su “Abilita e sinc”.
  4. Per tenerti aggiornato, fai clic su Sincronizza ora a intervalli di qualche mese.

Aprite un ticket assistenza

La cosa più semplice che possiamo fare, adesso che sappiamo dov’è il problema, è aprire un ticket col nostro hosting provider e richiedere assistenza. Capisco bene che non vogliate metter mano alle impostazioni del server per paura di combinare qualche guaio! Spiegate il problema all’assistenza del vostro hosting e lo risolveranno per voi molto rapidamente!

Conclusione

Spero che questo articolo ti aiuti a risolvere l’errore cURL 35 su WordPress che causa disfunzionamenti con le REST API e disagi con le richieste di loopback. 

Quando non si è sicuri, chiedete assistenza a chi ne sa un po’ di più! 

In questo articolo:

Suggeriti
Suggeriti