2013-07-02 9 views
21

Attualmente utilizza libmproxy, che a sua volta utilizza telnetlib per effettuare richieste alle pagine Web HTTPS. Tuttavia, il seguente errore viene generato:Come evitare l'errore 'tlsv1 alert unknown ca' in libmproxy?

Error: [('SSL routines', 'SSL3_READ_BYTES', 'tlsv1 alert unknown ca')] 

Credo che questo sia legato alla impossibilità di verificare l'identità della CA che fa garante per il certificato la pagina utilizza. Penserei che ci dovrebbe essere un'impostazione che posso attivare (o disattivare) che abiliti l'esclusione della verifica: non sono interessato a verificare l'identità del firmatario digitale.

Penso che una possibile, brutta soluzione potrebbe essere quella di ricucire il codice per rilevare l'eccezione e ignorarlo, ma preferirei un modo più pulito e più supportato per farlo.

Qual è un buon modo per evitare/risolvere questo problema?

Grazie mille!

+2

Sei consapevole che bypassare la verifica rende la connessione vulnerabile a potenziali attacchi MITM? – Bruno

+1

Sì. Questo è un ambiente intrinsecamente insicuro ed è "OK" inserire situazioni potenzialmente insicure. Grazie per l'avviso, però :) –

+1

Ho cercato di approfondire, ma non è davvero una domanda "in python" - la risposta sarà specifica per le librerie sottostanti. Sembra che libmproxy usi netlib che usa la libreria openssl, quindi dovrei iniziare osservando la libreria openssl e capire come disattivare la convalida, quindi vedere se netlib ha un modo per attivarlo, quindi vedere se libmproxy ha un modo per attivare make netlib fare la cosa che rende openssl non convalidare il certificato .. –

risposta

2

Ciò accade quando il certificato proxySG presentato all'utente non è firmato da una CA attendibile.

Ho avuto anche questo errore, l'ho risolto spingendo la CA (quella usata per il proxy ssl) al browser attuale, attraverso i criteri di gruppo.

+0

Sembra che valga la pena esaminare. Potresti approfondire come farlo e cosa significano questi termini? –

2

Sembra che sia possibile utilizzare il certutil se si dispone di client Windows.

http://support.microsoft.com/kb/555252

Per i client Linux è possibile utilizzare:

sudo mkdir /etc/share/certificates/extra && cp cacert.crt /user/share/certficates/extra/cacert.crt 
sudo dpkg-reconfigure ca-certificates 

Per i client Mac:

sudo security add-trusted-cert -d -r trustRoot -k \ 
"/Library/Keychains/System.keychain" \ 
"/private/tmp/certs/certname.cer" 

(ottenuto questa risposta da https://apple.stackexchange.com/questions/80623/import-certificates-into-system-keychain-via-the-command-line)

Inoltre, leggendo la seguente pagina web libmproxy sembra che sia in grado di caricare c certificati di ustom. Se disponi già di un'autorità di certificazione interna di cui i tuoi clienti si fidano già, potresti voler semplicemente generare certificati da lì.