style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Extraer el atributo certificado de un archivo .cer

Buenas tardes tengo un problema, estoy haciendo facturación electrónica con groovy and grails. Tengo mis archivos .cer .key y password, tengo entendido que dentro del archivo .cer se encuentra el numero de serie, la fecha inicial, la fecha final y el certificado como tal.... investigando encontré como obtener los tres primeros.

InputStream is = new FileInputStream(RutaArchivocer)
CertificateFactory cf = CertificateFactory.getInstance("X.509")
X509Certificate certificado=(X509Certificate)cf.generateCertificate(is)

byte[] byteArray= certificado.getSerialNumber().toByteArray() //obtengo no. de serie
String Noserie = new String(byteArray)

String fechainicio=certificado.getNotBefore() //obtengo fecha de inicio
String fechafin=certificado.getNotAfter() //obtengo fecha de fin

segun yo con el atributo "public key" deberia obtener todo el "chorizo" del certificado como tal pero no es así, me regresa muchos números y al pasarlo a base 64 me regresa un "chorizo" que NO es el certificado valido.... alguien me puede guiar, estoy perdido!!

String certi=certificado.getPublicKey() //obtiene el certificado
String certificad=certi.bytes.encodeBase64().toString()

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

publickey

publickey no es el certificado. El certificado es bastante más que una simple llave pública: es una llave pública, firmada con la llave privada de otra entidad (generalmente la autoridad certificadora, la emisora del certificado, aunque puede ser una cadena y haber más niveles).

Si quieres el certificado como tal, en binario, pues es el contenido íntegro del archivo .cer; pero para qué lo quieres?

Imagen de ezamudio

firma?

O lo que quieres es la firma digital? Quieres firmar una factura? Para eso no requieres el certificado, sino la llave privada. Pero lo que realmente necesitas es entender cómo funciona el cifrado con llave pública. Lee algo de PKI (public key infrastructure) para entender lo que necesitas hacer.

Certificado y Xml

Gracias por contestar ezamundio, pues mira estoy mandando a timbrar un xml (que yo genero). (veo que sabes mucho del tema) como sabras el xml esta formado de MUCHOS atributos version, serie, folio, sello, subtotal no. Certificado, CERTIFICADO etc..... entonces para armar el xml que voy a timbrar necesito sacar el no. de serie y el certificado del archivo .cer para ponerlos en el xml........ (Espero me entiendas)

Imagen de ezamudio

timbrado

nunca he hecho timbrado fiscal. Pero usan PKI. Si quieren el certificado completo, pues revisa la spec de quien espera que le mandes ese XML, a ver qué te piden exactamente en ese campo, en vez de estar adivinando, porque puede ser el contenido íntegro del archivo .cer pero codificado como base 64 o hexadecimal o un CDATA binario, etc. O puede ser alguna otra cosa, pero en ese formato. Recuerda: el certificado una estructura de datos que contiene un montón de cosas: nombre, fecha de emisión, fecha de expiración, llave pública, firma del emisor, datos del emisor (nombre, ID del certificado correspondiente a la llave privada con la cual firmaron tu certificado, etc).

Certificado

Gracias por tu atención. seguiré leyendo e investigando como obtener ese certificado. solo se que es una cadena codificada en base64 (como la siguente ) la cual debo poner en el atributo "certificado" del xml ...................."MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwZLNThipunsN/NF1XtvESMTDwQFvas/Ugig6qwEfSZc0MDxMpKLEkEePmQwtZD+zXFSMVa6hmOu4M+FzGiRXbj4YJXn9Myjd8xbL/c+9UIcrYoZskxDvMxgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJc6/6M3rNNDY3OFhBK+V/sPMzWWGt8S1yjmtPfXgFs1t65AZ2hcTwTAuHrKwDatJ1ZPfa482ZBROAAX1waz7WwXp0gso7sDCm2/yUVww=="

Gracias!

Ya has podido descifrar esta parte??

Qué tal Jonathan. Brevemente te comento, me encuentro realizando mi proyecto de residencias, el cual consiste en desarrollar una app que se encargue únicamente de timbrar facturas, no conozco mucho del tema, y he estado buscando info en foros como estos, mi pregunta es, ya has podido obtener los datos de estos archivos?? O de igual manera, (Sin ánimos de lucro ni nada por el estilo). Será que podrías describirme cómo llevas a cabo el proceso para timbrar y generar tu XML??? De antemano te agradezco la ayuda hermano...

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">