Come risolvere 'SSL: CERTIFICATE_VERIFY_FAILED' su Python 3.11?

👤 Iniziato da @eustachiolombardo95
📅 18/12/2025 17:01
📁 Tecnologia 🌐 IT
Avatar di eustachiolombardo95
Salve ragazzi, sto impazzendo con questo errore da due giorni e spero possiate aiutarmi. Lavoro su un progetto Python 3.11 per Windows 10 e ogni volta che provo a installare pacchetti con pip ottengo l'errore SSL:

```bash
pip install pandas
# ERRORE:
# WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None))
# after connection broken by 'SSLError(SSLCertVerificationError(1,
# '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
# unable to get local issuer certificate (_ssl.c:997)'))'
```

Ho già provato:
- Aggiornare pip (`python -m pip install --upgrade pip`)
- Usare `--trusted-host pypi.org`
- Reinstallare Python con "Add Python to PATH"
- Verificare l'orario del sistema

Stranamente, se uso una connessione VPN l'errore scompare, ma non è una soluzione sostenibile. Dopo una nottata di tentativi, sono pronto a divorare un intero tavolo di cioccolato... Qualcuno ha trovato una fix definitiva? Suggerimenti per certificati mancanti o impostazioni pip?
Avatar di jessica.lopez352
Oh, ti capisco perfettamente, quella sensazione di girare a vuoto per ore è una tortura! Il fatto che con la VPN funzioni significa chiaramente che c’è un problema di rete o di certificati a livello locale, probabilmente il tuo sistema non riesce a recuperare la catena di certificati intermedi da qualche server. Su Windows, a volte il problema nasce dal fatto che Python non usa il certificato radice aggiornato del sistema. Ti consiglio di provare a scaricare manualmente il file “cacert.pem” aggiornato da https://curl.se/ca/cacert.pem e indicarlo esplicitamente a pip con:

```bash
pip install --cert cacert.pem pandas
```

Oppure imposta la variabile d’ambiente `SSL_CERT_FILE` puntando a quel file. Se poi usi programmi antivirus o firewall, controlla che non stiano intercettando il traffico SSL, succede spesso che blocchino o modifichino i certificati.

Se non funziona, ti suggerisco di reinstallare Python usando la versione embeddable e vedere se il problema persiste lì — a volte le installazioni standard si incasinano con le librerie SSL di sistema.

E no, non ti arrendere così facilmente, il cioccolato è la seconda migliore soluzione dopo sistemare quei dannati certificati!
Avatar di liberamoretti26
Ho letto il tuo post, e sono perfettamente in sintonia con la frustrazione che stai vivendo. @jessica.lopez352 ha dato dei suggerimenti validi, ma vorrei aggiungere un altro paio di cose. Ho avuto un problema simile qualche tempo fa, e alla fine ho scoperto che il mio antivirus stava interferendo con i certificati SSL. Potresti dare un'occhiata alle impostazioni del tuo antivirus e disattivare qualsiasi scansione HTTPS, se presente. Inoltre, un altro trucco che ha funzionato per me è stato aggiornare i certificati usando il pacchetto `certifi`. Prova a installarlo con `pip install certifi` e poi aggiorna i certificati con `python -m certifi`. Se tutto fallisce, potresti considerare di usare un ambiente virtuale per isolare il tuo progetto e i suoi pacchetti. Spero che qualcosa di tutto ciò ti aiuti a risolvere il problema!
Avatar di demetriasorrentino31
Ah, questo errore maledetto ci ha fatto dannare tutti almeno una volta! Capisco la tua frustrazione, soprattutto dopo aver già provato le soluzioni più comuni. Vedo che @jessica.lopez352 e @liberamoretti26 hanno dato ottimi suggerimenti, ma provo a condensare qualcosa di più mirato basandomi sulla mia esperienza:

1. **Certificati mancanti**: Scarica il bundle aggiornato da cURL come già suggerito, ma **non usare --cert**! Imposta invece la variabile d'ambiente permanentemente:
```bash
setx SSL_CERT_FILE "C:\percorso\cacert.pem"
```
Riavvia il terminale. Questo risolve il 90% dei casi su Windows quando Python non trova i CA trust.

2. **Antivirus/firewall**: Disattiva temporaneamente *tutti* i software di sicurezza e prova. Se funziona, cerca nelle impostazioni l'opzione "SSL Scanning" o "HTTPS Scanning" e disabilitala. Kaspersky e Bitdefender sono noti per causare questi problemi.

3. **Proxy invisibili**: Se sei in rete aziendale/universitaria, prova:
```bash
pip --proxy http://proxy-url:porta install pandas
```
Molte reti filtrano il traffico HTTPS senza dirtelo.

Un trucchetto finale? Installa **pip-system-certs** (`pip install pip-system-certs`), che forza pip a usare i certificati di sistema invece dei suoi. Funziona magia quando nulla altro serve.

Tienici aggiornati! E se tutto fallisce... il cioccolato è comunque un'ottima soluzione temporanea 😉
Avatar di eustachiolombardo95
Demetri, grazie mille per questa sintesi super completa! Dopo giorni di frustrazione, mi hai dato nuove speranze 😅 Provo subito il pip-system-certs (quel nome sembra magia nera) e disattivo Kaspersky - scommetto che è proprio lui il colpevole. Già solo l'idea di disabilitare lo scanning SSL mi fa respirare. Ti giuro che se funziona, ti dedico una tavoletta di cioccolato intera! Aggiorno appena ho risultati... intanto preparo gli snack di emergenza 🍫
Avatar di gregorionegri
Eustachio, mi hai fatto sorridere con questa storia del cioccolato! 🍫 Ma ti capisco, quando i problemi tecnici si risolvono sembra sempre un miracolo. Kaspersky è un classico: quel "SSL scanning" è una spina nel fianco, lo disattivi e magari tutto torna a funzionare come per magia. Se poi il pip-system-certs non dovesse bastare, prova a dare un'occhiata anche alla data del sistema - sì, lo so che l'hai già controllata, ma a volte Windows fa i capricci e la sballa di qualche minuto, e i certificati SSL sono pignoli come un nonno con l'orologio.

E se proprio non va, ti consiglio di dare un'occhiata a un vecchio trucco: scaricare manualmente il certificato da [curl.se](https://curl.se/docs/caextract.html) e impostarlo come variabile d'ambiente. Sembra roba da hacker anni '90, ma funziona ancora. Intanto, tieni pronto quel cioccolato... magari lo divideremo a metà! 😉

La Tua Risposta

💬

Vuoi partecipare alla discussione?

Accedi o registrati per scrivere la tua risposta e unirti alla conversazione!