Estrai informazioni sulla catena del certificato dal certificato X509 firmato (risposta CSR) in Android / Bouncycastle

StackOverflow https://stackoverflow.com//questions/12699853

Domanda

Sono in grado di estrarre le informazioni sulla catena del certificato da un certificato client X509 firmato CA-firmato utilizzando le lib classi Android o Bouncycastle?

Ho un client Android che riceve un certificato X509 firmato CA da un server attendibile. Voglio salvare il certificato client firmato e la mia chiave privata per un file PKCS12 (.p12). Attualmente sto facendo questo creando un oggetto KeyStore e aggiungendo il certificato e la chiave privata. Quando aggiungo il client PrivateKey con il metodo KeyStore.setKeyEntry(), un Certificate[] chain è l'ultimo argomento, che attualmente contiene solo il certificato client. impedisce che il mio certificato venga verificabile perché non ho il certificato CA nel Certificate[] chain? e se sì, è possibile compilare una catena di certificazione con informazioni estratte dal X509Certificate firmato? .

La maggior parte degli esempi sembra caricare la catena CA da un file PEM, BKS Trust Store o ha già accesso a un elenco di certificati.

Ecco cosa ho:

    X509Certificate cert;      // signed client cert
    PrivateKey pkey;           // client private key
    String password; 

    KeyStore store;
    store = KeyStore.getInstance("PKCS12", "BC");
    store.load(null, null);

    // adding the signed cert
    store.setCertificateEntry("Client certificate", cert);

    // creating the cert chain
    X509Certificate[] chain = new X509Certificate[1];
    chain[0] = cert;
    // add rest of the certs in the chain here

    // adding the private key   
    store.setKeyEntry("Client private key", pkey, password.toCharArray(), chain);

    FileOutputStream fos;
    fos = openFileOutput("clientCredentials.p12", Context.MODE_PRIVATE);
    store.store(fos, password.toCharArray());
    fos.flush();
    fos.close();
.

Grazie in anticipo!

È stato utile?

Soluzione

Il certificato CA (s) non è incluso nel certificato firmato.Devi prenderli da qualche parte (pre-installazione, download dal server attendibile, ecc.).Per quanto riguarda l'installazione della catena completa, se il verificatore ha già accesso ai certificati CA necessari, possono sempre verificare il certificato di entità finale.Come intendi usare la tua chiave e il tuo certificato?

BTW, la tua chiamata a setCertificateEntry() crea una voce del certificato attendibile che probabilmente non è ciò che desideri con un certificato di entità finale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top