Página 1 de 2

Valor para el atributo noCertificado

Publicado: Jue Jun 07, 2012 1:11 am
por mike08
Hola a todos, estoy empezando esto de la fact electronica;
Me parecio correcto poner el tema aqui.

De donde obtengo el valor para el atributo noCertificado en elemento Comprobante
,menciona k es un num de 20 digitos.

De antemano muchas gracias.

Re: Valor para el atributo noCertificado

Publicado: Jue Jun 07, 2012 8:32 am
por Dado
Se obtiene usando OpenSSL

OpenSSL X509 -inform DER -in certificado.cer -serial

Re: Valor para el atributo noCertificado

Publicado: Jue Jun 07, 2012 10:34 am
por mike08
DADO escribió:Se obtiene usando OpenSSL

OpenSSL X509 -inform DER -in certificado.cer -serial
Gracias DADO.

De hecho si había visto esa instrucción así: openssl x509 -in AAAA010101AAA.cer.pem -serial -noout

Pero me regresa un numero de mas de 20 caracteres, (y el documento del SAT version=3.2 me dice que es un numero de 20 posiciones)

Y he visto ejemplos de comprobantes en el atributo noCertificado y son de longitud 20.

Comprobante.noCertificado
Atributo requerido para expresar el número de
serie del certificado de sello digital que ampara al
comprobante, de acuerdo al acuse
correspondiente a 20 posiciones otorgado por el
sistema del SAT.

Que estoy haciendo mal?

De antemano muchas gracias.

Re: Valor para el atributo noCertificado

Publicado: Jue Jun 07, 2012 10:41 am
por Dado
Es porque te lo esta regresando en hexadecimal, pero es facil la conversion, mira pon atencion :

si te da un resultado como :

30 30 30 30 32 31 34 36 38 etc

Debes quitarle el "3" y te queda

0 0 0 0 2 1 4 6 8 etc

Porque? porque el caracter ASCI #34 es igual al caracter "4"

Re: Valor para el atributo noCertificado

Publicado: Jue Jun 07, 2012 10:54 am
por mike08
DADO escribió:Es porque te lo esta regresando en hexadecimal, pero es facil la conversion, mira pon atencion :

si te da un resultado como :

30 30 30 30 32 31 34 36 38 etc

Debes quitarle el "3" y te queda

0 0 0 0 2 1 4 6 8 etc

Porque? porque el caracter ASCI #34 es igual al caracter "4"
DADO, Muchas gracias por tu ayuda y por la explicación.
Voy a intentarlo como mencionas.

Re: Valor para el atributo noCertificado

Publicado: Lun Jun 11, 2012 12:34 pm
por mike08
mike08 escribió:
DADO escribió:Es porque te lo esta regresando en hexadecimal, pero es facil la conversion, mira pon atencion :

si te da un resultado como :

30 30 30 30 32 31 34 36 38 etc

Debes quitarle el "3" y te queda

0 0 0 0 2 1 4 6 8 etc

Porque? porque el caracter ASCI #34 es igual al caracter "4"
DADO, Muchas gracias por tu ayuda y por la explicación.
Voy a intentarlo como mencionas.
DADO muchas gracias, es correcto lo que mencionas.

Re: Valor para el atributo noCertificado

Publicado: Jue Ago 09, 2012 5:01 pm
por mdorantes
No hay alguna otra forma de obtener el valor "nocertificado" sin utilizar openssl??...
si alguien sabe??? en c#

Re: Valor para el atributo noCertificado

Publicado: Vie Ago 10, 2012 4:02 pm
por mike08
mdorantes escribió:No hay alguna otra forma de obtener el valor "nocertificado" sin utilizar openssl??...
si alguien sabe??? en c#
Puedes abrir el Certificado de Sello Digital.cer(doble click en windows) se abre una ventana.
En pestaña Detalles en valor Número de serie. De ahí lo puedes tomar, solo convertirlo a base decimal.

Re: Valor para el atributo noCertificado

Publicado: Mié Jun 25, 2014 2:00 am
por manuelin01
No consigo que funcione! :S

Con php tengo el siguiente codigo:

$salida = system("openssl X509 -inform DER -in ruta -serial", $retval); //ruta es la ruta al archivo .cer
echo '
</pre>
<hr />Ultima linea de la salida: ' . $ultima_linea . '
<hr />Valor de retorno: ' . $retval.'<hr />';


y obtengo:
Ultima linea de la salida:
Valor de retorno: 1

Alguien me puede ayudar, para saber que hago mal???

Gracias!!!

Re: Valor para el atributo noCertificado

Publicado: Mié Jun 25, 2014 8:41 am
por fortiz
Valor de retorno: 1
Fallo la ejecucion del openssl ...

No mencionas como obtienes $ultima_linea ....

Checa la funcion openssl_x509_parse de PHP ...

$paso = openssl_x509_parse($cert); // $cert es el certificado en formato PEM
$serial = convierte($paso['serialNumber']);

El codigo fuente de la funcion convierte lo puedes ver aqui http://www.lacorona.com.mx/fortiz/sat/cfdcvali.phps