Página 1 de 2

Como incluir certificado en el XML

Publicado: Vie Ene 07, 2011 4:37 pm
por kike8570
buenas tardes

como se debe de incluir el certificado en el xml

se que es opcional pero un cliente me lo pide

gracias
Enrique M

Re: Como incluir certificado en el XML

Publicado: Vie Ene 07, 2011 4:46 pm
por Dado
Para pasar el certificado a base64 y poderlo poner en el XML debes usar

openssl.exe x509 -inform DER -in "aaa010101aaa_CSD_01.cer" > "Cert.txt"

en Cert.txt esta el "chorizo" formado unicamente de letras y numeros (no hay caracteres raros) y eso es lo que tienes que poner en el atributo "certificado" del nodo <Comprobante>

Saludos,

Re: Como incluir certificado en el XML

Publicado: Lun Ene 17, 2011 6:53 pm
por DeeNeon
DADO escribió:Para pasar el certificado a base64 y poderlo poner en el XML debes usar

openssl.exe x509 -inform DER -in "aaa010101aaa_CSD_01.cer" > "Cert.txt"

en Cert.txt esta el "chorizo" formado unicamente de letras y numeros (no hay caracteres raros) y eso es lo que tienes que poner en el atributo "certificado" del nodo <Comprobante>

Saludos,


No seria el sello lo que dices, DADO?! porque tengo el mismo problema que el compañero

Cargo el archivo con

Código: Seleccionar todo

X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado, elPwd);

y apartir de solo puedo obtener su NoCertificado, cosas asi, pero no el "chorizo" que dices, si alguien tiene alguna idea de como obtenerlo seria de gran ayuda.

Re: Como incluir certificado en el XML

Publicado: Lun Ene 17, 2011 7:03 pm
por lcarrasco
DeeNeon escribió:
DADO escribió:Para pasar el certificado a base64 y poderlo poner en el XML debes usar

openssl.exe x509 -inform DER -in "aaa010101aaa_CSD_01.cer" > "Cert.txt"

en Cert.txt esta el "chorizo" formado unicamente de letras y numeros (no hay caracteres raros) y eso es lo que tienes que poner en el atributo "certificado" del nodo <Comprobante>

Saludos,


No seria el sello lo que dices, DADO?! porque tengo el mismo problema que el compañero

Cargo el archivo con

Código: Seleccionar todo

X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado, elPwd);

y apartir de solo puedo obtener su NoCertificado, cosas asi, pero no el "chorizo" que dices, si alguien tiene alguna idea de como obtenerlo seria de gran ayuda.


Hola amigo en la libreria que hice viene como, especificamente en el siguiente archivo/linea:
https://github.com/bambucode/tfacturael ... l.pas#L439

NOTA: Necesitaras tambien el archivo: https://github.com/bambucode/tfacturael ... s.pas#L482 ahi mismo viene la linea donde se define el metodo AsBase64

PD. El metodo de dado tambien es valido solo que su metodo mandar llamar al openssl.exe y mi metodo es directo con el DLL del OpenSSL, ambos validos y cuestion de gustos.

Re: Como incluir certificado en el XML

Publicado: Lun Ene 17, 2011 7:13 pm
por DeeNeon
Gracias! le echare una hojeada!

Re: Como incluir certificado en el XML

Publicado: Mar Ene 18, 2011 12:57 pm
por vms
lcarrasco escribió:
DeeNeon escribió:
DADO escribió:Para pasar el certificado a base64 y poderlo poner en el XML debes usar

openssl.exe x509 -inform DER -in "aaa010101aaa_CSD_01.cer" > "Cert.txt"

en Cert.txt esta el "chorizo" formado unicamente de letras y numeros (no hay caracteres raros) y eso es lo que tienes que poner en el atributo "certificado" del nodo <Comprobante>

Saludos,


No seria el sello lo que dices, DADO?! porque tengo el mismo problema que el compañero

Cargo el archivo con

Código: Seleccionar todo

X509Certificate2 certificado = new X509Certificate2(ArchivoCertificado, elPwd);

y apartir de solo puedo obtener su NoCertificado, cosas asi, pero no el "chorizo" que dices, si alguien tiene alguna idea de como obtenerlo seria de gran ayuda.


Hola amigo en la libreria que hice viene como, especificamente en el siguiente archivo/linea:
https://github.com/bambucode/tfacturael ... l.pas#L439

NOTA: Necesitaras tambien el archivo: https://github.com/bambucode/tfacturael ... s.pas#L482 ahi mismo viene la linea donde se define el metodo AsBase64

PD. El metodo de dado tambien es valido solo que su metodo mandar llamar al openssl.exe y mi metodo es directo con el DLL del OpenSSL, ambos validos y cuestion de gustos.


Si quieres la cadena del certificado, yo lo hice asi en C#

Código: Seleccionar todo


X509Certificate2 certEmisor = new X509Certificate2();
byte[] byteCertData = ReadFile(strCertificado);
certEmisor.Import(byteCertData);
Convert.ToBase64String(certEmisor.GetRawCertData());


strCertificado es la ruta de tu archivo .cer

Espero te sirva esto..

Saludos :)

Re: Como incluir certificado en el XML

Publicado: Mar Ene 18, 2011 2:07 pm
por DeeNeon
Gracias por la aportacion anterior, lo que sucede aqui es que no es solo leer el archivo .cer sino que leerlo como tal no proporciona el campo "certificado" dentro del XML, para hacer eso, es como dijo DADO: aplicas openssl.exe x509 -inform DER, esto convierte el archivo certificado en un PEM y ahora lo que esta dentro de el es lo que hay que extraer dando la salida en un TXT (de preferencia), el asunto aqui es que el openssl es para aplicaciones cliente, mi ambiente esta en el CFDI y no hayo forma de convertir el archivo al vuelo y agregarlo al XML en el ASP.Net. Creo que habra que seguir buscando...

Gracias de cualquier forma!

Re: Como incluir certificado en el XML

Publicado: Mar Ene 18, 2011 2:22 pm
por vms
DeeNeon escribió:Gracias por la aportacion anterior, lo que sucede aqui es que no es solo leer el archivo .cer sino que leerlo como tal no proporciona el campo "certificado" dentro del XML, para hacer eso, es como dijo DADO: aplicas openssl.exe x509 -inform DER, esto convierte el archivo certificado en un PEM y ahora lo que esta dentro de el es lo que hay que extraer dando la salida en un TXT (de preferencia), el asunto aqui es que el openssl es para aplicaciones cliente, mi ambiente esta en el CFDI y no hayo forma de convertir el archivo al vuelo y agregarlo al XML en el ASP.Net. Creo que habra que seguir buscando...

Gracias de cualquier forma!

Pues.. asi es como yo genero el campo certificado (cfdi.certificado en mi codigo)
estoy generando facturas de prueba y SAT me dice que todo esta bien y el validaCFD de Dado me dice lo mismo..
si usas .net no hagas tanto rollo con openssl y demas.. no es necesario.. en mi codigo no tengo llamados a nada del openssl..
te anexo de nuevo el codigo

Código: Seleccionar todo


X509Certificate2 certEmisor = new X509Certificate2(); // Generas un objeto del tipo de certificado
byte[] byteCertData = ReadFile(strCertificado); // Manda llamar la funcion Readfile para cargar el archivo .cer
certEmisor.Import(byteCertData); // Importa los datos del certificado qeu acabas de leer
Convert.ToBase64String(certEmisor.GetRawCertData()); // Conviertelos a Base64

// Funcion para leer archivo
// Se me paso ponertelo en el post anterior, disculpa :)
internal static byte[] ReadFile(string strArchivo) {
     FileStream f = new FileStream(strArchivo, FileMode.Open, FileAccess.Read);
     int size = (int)f.Length;
     byte[] data = new byte[size];
     size = f.Read(data, 0, size);
     f.Close();
     return data;
}

Re: Como incluir certificado en el XML

Publicado: Mar Ene 18, 2011 2:42 pm
por DeeNeon
vms escribió:
DeeNeon escribió:Gracias por la aportacion anterior, lo que sucede aqui es que no es solo leer el archivo .cer sino que leerlo como tal no proporciona el campo "certificado" dentro del XML, para hacer eso, es como dijo DADO: aplicas openssl.exe x509 -inform DER, esto convierte el archivo certificado en un PEM y ahora lo que esta dentro de el es lo que hay que extraer dando la salida en un TXT (de preferencia), el asunto aqui es que el openssl es para aplicaciones cliente, mi ambiente esta en el CFDI y no hayo forma de convertir el archivo al vuelo y agregarlo al XML en el ASP.Net. Creo que habra que seguir buscando...

Gracias de cualquier forma!

Pues.. asi es como yo genero el campo certificado (cfdi.certificado en mi codigo)
estoy generando facturas de prueba y SAT me dice que todo esta bien y el validaCFD de Dado me dice lo mismo..
si usas .net no hagas tanto rollo con openssl y demas.. no es necesario.. en mi codigo no tengo llamados a nada del openssl..
te anexo de nuevo el codigo

Código: Seleccionar todo


X509Certificate2 certEmisor = new X509Certificate2(); // Generas un objeto del tipo de certificado
byte[] byteCertData = ReadFile(strCertificado); // Manda llamar la funcion Readfile para cargar el archivo .cer
certEmisor.Import(byteCertData); // Importa los datos del certificado qeu acabas de leer
Convert.ToBase64String(certEmisor.GetRawCertData()); // Conviertelos a Base64

// Funcion para leer archivo
// Se me paso ponertelo en el post anterior, disculpa :)
internal static byte[] ReadFile(string strArchivo) {
     FileStream f = new FileStream(strArchivo, FileMode.Open, FileAccess.Read);
     int size = (int)f.Length;
     byte[] data = new byte[size];
     size = f.Read(data, 0, size);
     f.Close();
     return data;
}


Amigo... me acabas de aclarar la duda de 8 dias!!! te lo agradezco de verdad!! funciona perfectamente!
Intente hacer algo similar como lo haces tu, pero siempre me marcaba el fabuloso error del "System.FormatException: Invalid length for a Base-64 char array" y pense en seguirle por otro lado... no sabes cuanto te debo! mil gracias!!

Re: Como incluir certificado en el XML

Publicado: Mar Ene 18, 2011 3:27 pm
por vms
DeeNeon escribió:
Amigo... me acabas de aclarar la duda de 8 dias!!! te lo agradezco de verdad!! funciona perfectamente!
Intente hacer algo similar como lo haces tu, pero siempre me marcaba el fabuloso error del "System.FormatException: Invalid length for a Base-64 char array" y pense en seguirle por otro lado... no sabes cuanto te debo! mil gracias!!


Pos te paso mi cuenta de BBV y vemos de a cuanto me agradeces :D jajajajajaj ntc..
no hay problema.. yo se que todo esto de los CFD's es un desma. y quien conoce no dice nada, o dice cosas
a medias y de repente nos dejan "pior" que como estabamos cuando empezamos jajaja..

Un placer ayudarte.. :)

Saludos..