Extraiga información de la cadena de certificados del certificado X509 firmado (respuesta CSR) en Android/BouncyCastle

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

Pregunta

¿Puedo extraer información de la cadena de certificados de un certificado de cliente X509 firmado por una CA utilizando las bibliotecas de Android o BouncyCastle?

Tengo un cliente de Android que recibe un certificado X509 firmado por una CA de un servidor confiable.Quiero guardar el certificado de cliente firmado y mi clave privada en un archivo PKCS12 (.p12).Actualmente estoy haciendo esto creando un KeyStore objeto y agregando el certificado y la clave privada.Cuando agrego el cliente PrivateKey con el KeyStore.setKeyEntry() método, un Certificate[] chain es el último argumento, que actualmente solo contiene el certificado del cliente. ¿Esto impedirá que mi certificado sea verificable porque no tengo el certificado de CA en el Certificate[] chain? Y en caso afirmativo, ¿es posible completar una cadena de certificados con información extraída del certificado firmado? X509Certificate?

La mayoría de los ejemplos parecen cargar la cadena de CA desde un archivo PEM, un almacén de confianza BKS o ya tienen acceso a una lista de certificados.

Esto es lo que tengo:

    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();

¡Gracias de antemano!

¿Fue útil?

Solución

Los certificados de CA no están incluidos en su certificado firmado.Tienes que obtenerlos de algún lugar (preinstalar, descargar desde un servidor confiable, etc.).En cuanto a no instalar la cadena completa, si el verificador ya tiene acceso a los certificados de CA necesarios, siempre podrá verificar su certificado de entidad final.¿Cómo piensa utilizar su clave y certificado?

Por cierto, tu llamada a setCertificateEntry() crea una entrada de certificado confiable que probablemente no sea lo que desea con un certificado de entidad final.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top