Estoy escribiendo una aplicación para Android que requiere certificación SSL para ciertas solicitudes web. A diferencia de las opciones que veo en línea sobre la creación de archivos de almacén de claves utilizando el archivo cert, tengo que hacer una solicitud web inicial que devuelva el certificado como una cadena en una respuesta JSON.Android - convertir cadena de certificado pkcs12 en objeto de certificado x509 para bks keystore
Los datos JSON tiene el formato como el siguiente ... (nota: el siguiente certificado se acorta, el "..." no existe en una respuesta real)
"result":{
"pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH+zxKUkKGX/eN...9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk="
},
estoy decodificación este valor utilizando Base64.deocode para guardarlo como un byte []
ssl.setPkcs12(Base64.decode(jsonObject.optString("pkcs12")));
Entonces estoy tratando de crear un X509Certificate usando el byte []
CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
InputStream in = new ByteArrayInputStream(ssl.getPkcs12());
X509Certificate cert = (X509Certificate) certFactory.generateCertificate(in);
Mi código está fallando en el método generateCertificate() con
"java.security.cert.CertificateException: org.apache.harmony.security.asn1.ASN1Exception: ASN.1 Sequence: mandatory value is missing at [4]".
He pasado una gran cantidad de tiempo tratando de arreglar lo que parece ser un problema simple, sin suerte en absoluto. ¡Cualquier ayuda sería increíble!
¿Puedes pegar aquí la respuesta JSON que contiene el certificado? – emboss
"resultado": { "pkcs12": "Ulv6GtdFbjzLeqlkelqwewlq822OrEPdH + zxKUkKGX/eN ... 9801asds3BCfu52dm7JHzPAOqWKaEwIgymlk =" }, – calebisstupid