Cosa deve verificare un cliente dopo aver ottenuto un certificato client?

1

Ho un client che genera un csr, lo invia a un server, il server quindi lo firma e restituisce il certificato come una stringa. la stringa viene quindi decodificata in un certificato x509 (utilizzando PEMParser di Bouncycastle) che viene quindi importata nel keystore del client.

Le domande sono:

  1. Devo verificare / convalidare qualcosa prima di importare il certificato client specificato? O come stringa (codifica? Pre / postfix?) O come certificato? Immagino che possa controllare che il certificato sia realmente originato dal mio csr (dalla mia chiave pubblica). Non sono sicuro di poter verificare che l'autorità di firma sia affidabile (penso che non sia necessariamente il caso se viene utilizzata una CA diversa per firmare i certificati del client e non è necessariamente attendibile dai client).

  2. Che rischio sto introducendo non verificando / convalidando nulla su di esso? Non riesco a pensare ad alcun attacco.

Grazie!

    
posta yair 14.07.2014 - 13:03
fonte

1 risposta

2

Tecnicamente il tuo certificato non fa per te. Hai un certificato in modo da poterlo mostrare a altre persone ; è pensato per convincerli, non tu. Non ti fidi necessariamente del tuo certificato.

Come salvaguardia contro i bug, potresti voler controllare che la chiave pubblica nel certificato corrisponda alla tua chiave privata: se la CA armeggia (male) e ti ha mandato il certificato sbagliato, allora vuoi sapere in anticipo in modo che tu può sporgere reclamo e ricominciare la procedura. Allo stesso modo, CA spesso invia i certificati indietro con una catena, cioè tutte le CA intermedie normalmente utilizzate per convalidare il certificato. Dato che un formato molto comune è PKCS # 7, in cui il certificato non è ordinato, il tuo codice deve assicurarsi di importare il giusto certificato nel mazzo.

Il potere dell'attaccante in tale processo è fastidioso: a seconda dei canali di comunicazione tra te e la CA, potrebbe sostituire il certificato con i byte spazzatura o un altro certificato con un nome o una chiave pubblica diversi. Tale certificato non sarebbe valido e porterà semplicemente a cose che non funzionano. In generale, vuoi diagnosticare tali occorrenze in anticipo.

    
risposta data 14.07.2014 - 13:29
fonte