Estoy tratando de usar Java para leer un certificado que recibí de una parte externa. El código está lanzando el siguiente error:Lectura de un certificado X.509 con Java
java.lang.RuntimeException: java.security.cert.CertificateException: Unable to initialize, java.io.IOException: extra data given to DerValue constructor
el código:
FileInputStream ksfis = new FileInputStream(this.getCertificateFile());
ksbufin = new BufferedInputStream(ksfis);
certificate = (X509Certificate)
CertificateFactory.getInstance("X.509").generateCertificate(ksbufin);
Para asegurarse de que el problema no estaba en el código, he creado un certificado autofirmado y lo utilizó con el código, y funcionó bien. He instalado ambos certificados en el llavero del sistema, y ambos son válidos. Estoy usando una Mac y Java 1.6.
¿Alguna idea de por qué obtengo la excepción anterior cuando cargo el certificado externo de Party? ¿Crees que se corrompió durante la transferencia? Si lo hizo, no debería aparecer como válido en el sistema local, ¿verdad?
Si lo abre en un editor de texto, ¿muestra texto o basura? –
Abrí el mío en el editor de texto y su basura completa y el de terceros está ordenadamente mal organizado dentro del certificado BEGIN y el texto del certificado END y el contenido dentro de estos dos extremos con == (codificado en base64?) – Java
ordenado como en '- ---- INICIAR CERTIFICADO ----- \ n base 64 basura \ n ----- CERTIFICADO FINAL ----- 'Supongo? –