Pregunta

escribo de aplicaciones para Android. ¿Cómo puedo usar el certificado en relación https cuando inicializar certificado del archivo de directorio y no de paquetes?

Cuando tengo paquetes de archivos con contraseña, el código funciona:     

    KeyStore keyStore = KeyStore.getInstance("PKCS12");
    keyStore.load(certificateIs, pass.toCharArray());
    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmf.init(keyStore, pass.toCharArray());
    SSLContext sc = SSLContext.getInstance("TLS");
    sc.init(kmf.getKeyManagers(), trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

Pero he inicializado certificado desde un archivo der:

    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509Certificate certificate = (X509Certificate) cf.generateCertificate(certBytes);

No sé cómo el uso de este certificado a través de la conexión https.

¿Fue útil?

Solución

Usted parece estar hablando de autenticación de certificado de cliente (en la que el dispositivo Android es el cliente).

En primer lugar, es necesario que el cliente tenga la clave privada correspondiente la clave pública en el certificado que está tratando de uso (que es el punto entero, nada de lo contrario, no sería autenticado). PKCS # 12 es uno de los formatos habituales para que contiene la clave privada y el certificado. Si sólo tiene el certificado en un der archivo, es probable que no tenga la clave privada en el mismo, por lo tanto, no va a funcionar. No es bastante claro por su pregunta lo que haces con la variable de certificate, con respecto a la KeyManagerFactory (si tiene un X509KeyManager personalizada, debe devolver la clave privada en su método getPrivateKey, de lo contrario no funcionará).

En segundo lugar, la autenticación de certificado de cliente es siempre iniciada por el servidor, por lo que se necesitaría el servidor que se creará en consecuencia también (que parece ser el caso ya, si su prueba basada en un almacén de claves PKCS # 12 obras) .

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