Su un'installazione WAMP appena configurata, una chiamata PHP con cURL verso un endpoint https:// può fallire con un errore del tipo SSL certificate problem: unable to get local issuer certificate. La causa non è un problema del server remoto, ma il fatto che a PHP manca un bundle di certificati radice attendibili con cui verificare la catena di certificazione — un bundle che le distribuzioni Linux includono di norma nel sistema operativo, mentre su Windows va procurato e indicato esplicitamente.
I tre passaggi della correzione
La sistemazione è rapida e si fa in tre passi: abilitare l'estensione OpenSSL (spesso già presente ma disattivata), scaricare il bundle di certificati radice mantenuto dal progetto curl, e indicarne il percorso a PHP.
# In php.ini (percorso tipico: C:\wamp64\bin\php\php8.x.x\php.ini)
# 1. Decommenta l'estensione OpenSSL (rimuovi il ; iniziale se presente)
extension=openssl
# 2. Scarica https://curl.se/ca/cacert.pem e salvalo, ad esempio, in:
# C:\wamp64\bin\php\php8.x.x\extras\ssl\cacert.pem
# 3. Indica il percorso del bundle a PHP
openssl.cafile="C:\wamp64\bin\php\php8.x.x\extras\ssl\cacert.pem"
Dopo la modifica di php.ini serve un riavvio dei servizi WAMP perché il file venga riletto: un semplice refresh della pagina non basta, PHP legge php.ini solo all'avvio del processo (o del modulo Apache).
Perché succede solo su Windows/WAMP
Le distribuzioni Linux mantengono un bundle di certificati radice di sistema (tipicamente in /etc/ssl/certs), aggiornato dai pacchetti di sistema e usato di default da OpenSSL e quindi da cURL. Su Windows, PHP compilato per WAMP non ha un equivalente integrato: senza indicare esplicitamente openssl.cafile, cURL non ha modo di stabilire se il certificato presentato dal server remoto è firmato da un'autorità riconosciuta, e per prudenza rifiuta la connessione invece di procedere comunque.
Un dettaglio da non dimenticare
Il bundle cacert.pem non è "installa e dimentica": le autorità di certificazione radice cambiano nel tempo (nuove aggiunte, revoche), quindi vale la pena riscaricare periodicamente una versione aggiornata dallo stesso URL ufficiale e sostituire il file esistente, specialmente se in futuro una chiamata che prima funzionava inizia a fallire di nuovo con lo stesso errore.