Il recupero del certificato client utilizzando Tcpdump produce un certificato di lunghezza zero

5

Sto provando a eseguire il proxy di un'app mobile (con Fiddler ), che invia un certificato client al server a cui si connette. Penserei che catturare il traffico con Tcpdump , recuperare il certificato client e usarlo con il violinista sarebbe sufficiente per aggirare questo.

Tuttavia, quando acquisisco pacchetti che utilizzano Tcpdump senza un proxy, noto che il server invia alcuni certificati, richiede un certificato client e il client invia un certificato vuoto (la lunghezza del certificato era 0 ). Dopo l'intero processo SSL, i dati dell'applicazione vengono inviati normalmente e l'app funziona correttamente. Il fatto che una lunghezza dei certificati 0 sia accettata mi ha fatto pensare che qualsiasi certificato sarebbe stato accettato, ma questo non sembra essere il caso.

In effetti passo un falso certificato a Fiddler, e vedo ancora una voce simile (lunghezza certificati 0 ), tale che mi fa pensare che manchi qualcosa su come il client invia il certificato.

Dopo il processo SSL, ricevo un messaggio Avviso crittografato e l'app non funzionerà affatto. Quindi, mi chiedo, perché ottengo una percentuale di certificato di 0 anche se invio un certificato? Anche se è falso, non dovrei vederlo in Tcpdump?

    
posta Spyros 23.07.2013 - 07:53
fonte

1 risposta

5

In TLS , dopo aver presentato il proprio certificato, il server potrebbe richiedere un certificato client (% messaggio% messaggio) . La richiesta contiene l'elenco dei nomi CA che il server utilizzerà per convalidare il certificato. Il client deve quindi rispondere con un messaggio CertificateRequest contenente un certificato corrispondente: il client esegue la scansione del certificato di cui è proprietario per uno che è stato emesso, direttamente o indirettamente, da una CA il cui nome è uno dei nomi specificati dal server.

Se il client non ha un certificato corrispondente, allora deve inviare un messaggio Certificate con una lista vuota (che è ciò che osservi) (in SSL 3.0, in quella situazione, il client ha omesso il messaggio Certificate del tutto, ma dal momento che TLS 1.0 è vuoto Certificate è obbligatorio).

Quando il client non presenta un certificato, spetta al server decidere cosa fare dopo. Il server può comunque accettare la connessione. Nella configurazione di IIS, questa è la differenza tra "certificato di richiesta" e "richiede certificato". Tra i possibili comportamenti, il server può accettare la connessione a livello SSL e quindi ricorrere a un protocollo di autenticazione a livello di applicazione all'interno del tunnel (che dall'esterno appare come "dati dell'applicazione crittografati") ").

Pertanto, o non hai un certificato di corrispondenza sul lato client, o il client non avviso che i suoi certificati corrispondono, ad es. per mancanza di una CA intermedia (nel caso root - > intermediateCA - > end-entity, e il server invia il nome della root, ma il client conosce solo "end-entity").

    
risposta data 23.07.2013 - 13:37
fonte

Leggi altre domande sui tag