Tutte le posizioni attive · 99.99% uptime
Protocolli

Proxy e validazione dei certificati TLS

L'errore di certificato che compare dopo aver configurato un proxy può indicare due cose completamente diverse: o esiste un livello di ispezione intermedio, o manca una semplice impostazione. Distinguere i due casi è fondamentale per la tua sicurezza.

Cosa dovrebbe succedere in condizioni normali?

In un tunnel CONNECT configurato correttamente, il proxy non tocca affattoil certificato. L'handshake TLS avviene direttamente tra client e server di destinazione; il proxy trasporta soltanto i byte cifrati. Di conseguenza il certificato è quello reale del sito di destinazione.

FIGURAFlusso del certificato in un tunnel sano
NORMALEClientProxyServer di destinazioneRichiesta CONNECT200 establishedClientHelloInoltra i byteCertificato realeIl proxy vede il certificato ma non può modificarlo

In questo flusso non ci si aspetta alcun errore di certificato. Se compare un errore, o c'è qualcuno nel mezzo, o l'archivio certificati del client è incompleto.

Cause degli errori

FIGURAOrigini degli errori di certificato con i proxy
DIAGNOSICODICE / SINTOMOPOSSIBILE CAUSASOLUZIONEunable to get local issuercertificateArchivio CA radice del client incompleto/obsoletoAggiorna il pacchetto CA (ca-certificates)self signed certificate inchainÈ presente un livello di ispezione intermedioVerifica e aggiungi la CA radice aziendalecertificate has expiredIl certificato di destinazione è scaduto oppure l'orologiodi sistema è erratoControlla l'ora di sistemahostname mismatchIl nome del certificato non corrisponde all'SNIControlla l'indirizzo di destinazione e la configurazione del proxyL'applicazione non si apre(pinning)Il certificate pinning rifiuta l'intermediazioneUsa un canale senza interception TLS

La seconda riga è un campanello d'allarme: se nella catena compare un certificato autofirmato, il tuo traffico potrebbe essere letto.

Come riconoscere l'SSL inspection

FIGURAEsaminare la catena dei certificati
Terminale01# Chi ha firmato il certificato ottenuto tramite proxy?02curl -v -x http://proxy.example.com:8080 https://example.com 2>&1 \\03 | grep -E "subject:|issuer:|SSL certificate"0405# Confronta con la connessione diretta06curl -v https://example.com 2>&1 | grep -E "subject:|issuer:"0708# Se l'issuer nei due output differisce, c'è qualcuno nel mezzo0910# Catena dettagliata con openssl11openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \\12 | openssl x509 -noout -issuer -subject -dates

Se i valori issuer nei due output sono diversi, significa che il proxy applica interception TLS e può leggere il tuo traffico.

Avviso di sicurezza

Silenziare l'errore di certificato con -k oppure verify=False non risolve il problema — lo rende solo invisibile. Equivale a permettere a chiunque si trovi nel mezzo di leggere il tuo traffico. Non usarlo mai in produzione.

Soluzioni corrette

01

Aggiorna l'archivio delle CA radice

È la causa più frequente. Su Linux update-ca-certificates, in Python certifi aggiorna il pacchetto.

02

Aggiungi la CA radice aziendale dopo averla verificata

Se sei in una rete aziendale e la policy lo prevede, aggiungi all'archivio attendibile del client la CA radice ricevuta dal reparto IT. Non aggiungere mai un certificato scaricato da internet.

03

Controlla l'ora di sistema

Un orologio di sistema errato fa apparire "scaduti" certificati validi. È un caso frequente nelle macchine virtuali.

04

Usa un canale senza interception TLS

Le applicazioni che usano il certificate pinning non accettano l'intermediazione. In questi casi serve la rete dati mobile o una connessione diretta.

Archivio certificati per applicazione

Non tutte le applicazioni usano l'archivio attendibile di sistema. È questa la spiegazione del classico "funziona nel browser ma non nel mio script":

AmbienteArchivio certificatiMetodo di aggiunta
Strumenti di sistema Linux/etc/ssl/certsupdate-ca-certificates
Python (requests)pacchetto certifiREQUESTS_CA_BUNDLE variabile
Node.jsArchivio integratoNODE_EXTRA_CA_CERTS variabile
Javakeystore cacertskeytool -import
FirefoxArchivio proprioImpostazioni → Certificati
ChromeArchivio di sistemaImpostazione del sistema operativo
FIGURAComunicare all'applicazione una CA radice aggiuntiva
Variabili d'ambiente01# Python requests02export REQUESTS_CA_BUNDLE=/percorso/ca-aziendale.pem0304# Node.js05export NODE_EXTRA_CA_CERTS=/percorso/ca-aziendale.pem0607# curl08curl --cacert /percorso/ca-aziendale.pem -x http://proxy.example.com:8080 https://example.com0910# Git11git config --global http.sslCAInfo /percorso/ca-aziendale.pem1213# A livello di sistema su Linux (fai attenzione)14sudo cp ca-aziendale.crt /usr/local/share/ca-certificates/15sudo update-ca-certificates

Aggiungere un certificato a livello di sistema lo rende attendibile per tutte le applicazioni. Fallo solo con certificati di cui conosci con certezza l'origine.

Certificate pinning

Alcune app mobili e client bancari fissano il certificato del server all'interno dell'applicazione. Quando rilevano un certificato intermedio rifiutano la connessione — nessuna aggiunta di CA radice cambia questo comportamento.

È questo il motivo della lamentela "l'app non si apre sul Wi-Fi aziendale ma funziona con i dati mobili". L'unica soluzione è usare per quell'app un canale senza interception TLS.

Riepilogo

In un tunnel CONNECT sano il proxy non tocca il certificato; se vedi un errore, o l'archivio CA radice del tuo client è incompleto, o esiste un livello di ispezione intermedio. Per distinguere i due casi, confronta con la connessione diretta il valore issuer nella catena dei certificati. Disattivare la verifica non è una soluzione: rende solo invisibile il rischio. Per vedere cosa lascia realmente trapelare la tua connessione puoi usare test di anonimato il nostro strumento.

Domande frequenti

01Perché ricevo un errore di certificato quando uso un proxy?

Le cause principali sono due: l'archivio delle CA radice del client può essere incompleto o obsoleto, oppure un livello di ispezione intermedio (SSL inspection) sta sostituendo il certificato.

02Posso disattivare la verifica del certificato?

Tecnicamente è possibile, ma non farlo. Disattivare la verifica permette a chiunque si trovi nel mezzo di leggere e modificare il tuo traffico. Risolvi la causa alla radice.

03Come capisco se c'è qualcuno nel mezzo?

Confronta l'issuer del certificato ottenuto tramite proxy con quello della connessione diretta. Se differiscono, c'è un livello intermedio.

04Devo aggiungere la CA radice aziendale?

Se lavori in una rete aziendale e la policy lo prevede, sì — ma procurati il certificato esclusivamente dal tuo reparto IT. Non aggiungere mai all'archivio attendibile una CA radice scaricata da internet.

05Perché l'applicazione non si apre affatto nella rete aziendale?

Potrebbe usare il certificate pinning. Queste applicazioni fissano internamente il certificato del server e rifiutano quello intermedio. Aggiungere una CA radice non cambia questo comportamento.

Articoli e pagine correlati

PROSSIMO PASSO

Potenzia oggi la tua infrastruttura proxy.

Inizia in pochi minuti con i pacchetti a pagamento oppure prova prima il nostro elenco di proxy gratuiti.

FREEPROXY.TR

Se cerchi proxy gratuiti, sei nel posto giusto

Una piattaforma proxy completa dove consultare indirizzi proxy gratuiti aggiornati, confrontare i tipi di proxy HTTP e SOCKS e verificare le tue connessioni proxy con strumenti gratuiti.