Obtener la llave pública

La libreria OpenSSL es la mas usada para generar el sello digital, independientemente del lenguaje aqui encontraras informacion de como usar la libreria
[[ FORO CERRADO DEBIDO A QUE YA LA INFORMACION YA NO ES VIGENTE ]]
RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Obtener la llave pública

Mensajepor RickAlanis » Mar Mar 25, 2014 3:01 pm

Buenas tardes a todos.
Tengo un problema con la obtención de la llave pública a partir del certificado en PEM que se incluye en los CFDi.
La requiero para la validación del sello.
En este momento la tengo funcionando perfectamente bien en Macintosh y Windows de 32 bits. Pero al parecer, no quiere funcionar con Windows 7 64 bits.
En Mac tengo la ventaja que el OpenSSL se incluye como parte del sistema operativo.
Pero en Windows no es el caso. Obtuve un binary de este sitio, donde también puedo obtener binaries para Win 64.
En general todo marcha bien, excepto la obtención de la llave pública a partir del certificado.
En cualquiera de los casos estoy usando este comando:
OpenSSL x509 -inform PEM -in certificado.pem -pubkey
Cuando llamo a este comando desde el software de desarrollo que uso y que involucra StdIn, StdOut y StdErr, en el StdOut me regresa la llave pública y el certificado, por separado (con guiones de inicio y fin). Si le agrego un -noout -out llavepublica.PEM sólo me entrega el certificado.
Pero resulta que con los compilados para Win 64 no me entrega el valor. Si entro en la consola de windows, el valor lo pone en la pantalla, pero no encuentro forma de que me lo ponga en el stdOut.
Esto sólo sucede, al parecer, con esa versión Ultimate de Win 7 64.
Este no es el único comando en el que involucro al stdOut para obtener el resultado, pero es el único comando con el que no puedo obtener lo que necesito (la llave pública) y sólo en las versiones de OpenSSL para Win 64, ya sea versión 0.9.8 o 1.0.1.
Me comentan que podría ser algo de direccionamiento de la salida, pero lo descarto porque en otros comandos sí obtengo lo que necesito en el stdOut.
¿Alguna inda?
Gracias de antemano.

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Obtener la llave pública

Mensajepor RickAlanis » Vie Abr 04, 2014 12:29 pm

Hola de nuevo a todos en el foro.

¿Nadie por el foro que conozca más de OpenSSL?

La verdad es que si me parece algo preocupante.

¡Saludos!

Avatar de Usuario
Dado
Mensajes: 15824
Registrado: Mar Jul 06, 2010 8:56 pm

Re: Obtener la llave pública

Mensajepor Dado » Vie Abr 04, 2014 12:40 pm

No haz intentado :

OpenSSL x509 -inform PEM -in certificado.pem -pubkey >archivo.txt
ADDENDAS? VALIDACION? CODIGO PARA PROGRAMAR TU PROPIA SOLUCION? TODO LO TENEMOS EN WWW.VALIDACFD.COM VISITANOS !!

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Obtener la llave pública

Mensajepor RickAlanis » Vie Abr 04, 2014 8:52 pm

Sí, y también he intentado

OpenSSL x509 -inform PEM -in certificado.pem -pubkey -noout -out pubkey.pem

y lo que sucede es que escribe en la consola la parte de la llave pública y la parte del certificado en el archivo out…

No pone en el StdOut la llave pública.

¿Podrá ser alguna configuración de Windows?

Gracias

Semper
Mensajes: 28
Registrado: Sab Ene 18, 2014 7:13 pm

Re: Obtener la llave pública

Mensajepor Semper » Lun Abr 07, 2014 7:02 pm

Bajo Windows XP 32bits el OpenSSL hace exactamente lo mismo que comentas ... Al extraer la llave pública, pone esta en la pantalla y el certificado lo pone en el archivo especificado por -out ...

Esto lo resolví, hace ya algunos ayeres, haciendo lo que comenta DADO ... adicionar una redireccion para salida de texto a un archivo ...

c:OpenSSL x509 -inform DER -in certificado.cer -pubkey -out certif.txt > public.txt

Te anexo una captura de pantalla con el comando y el resultado ...

Ya no uso OpenSSL, pero recordé que tuve ese mismo problema en el 2010 ...

Saludos,
Adjuntos
Prueba OpenSSL - PubKey.JPG
Prueba OpenSSL - PubKey.JPG (172.83 KiB) Visto 17339 veces

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Obtener la llave pública

Mensajepor RickAlanis » Mié Abr 09, 2014 8:37 am

Hola y gracias por las respuestas.

Me tardé en contestar por estar haciendo pruebas y algo de investigación.

Efectivamente, colocar un ">" y el nombre del archivo que recibe la llave pública funciona… en la consola de Windows.

Mi problema es que esta llamada a OpenSSL la hago desde mi ERP y no se envía a la consola de Windows (al menos aparentemente), porque OpenSSL es quien me regresa el error de que el símbolo ">" no es un parámetro válido.

El detalle es que yo desarrollo en Macintosh y tengo, con VirtualBox, una máquina de Windows 7 Professional (32 bits) y funciona muy bien el obtener la llave pública desde el StdOut. He incluso instalado en varios Windows el sistema y funciona bien. Pero en ciertos Windows no lo hace.

¿Será alguna configuración de Windows que deba cambiar?
Para dar un ejemplo, en un Windows donde no funcionó fue en un Windows 7 Ultimate de 64 bits. Ni la versión OpenSSL de 32 bits ni la compilada para 64 me permiten extraer la llave pública del StdOut.

Insisto: No pasa en todos los Windows.

¿Alguna idea?

Gracias.

Semper
Mensajes: 28
Registrado: Sab Ene 18, 2014 7:13 pm

Re: Obtener la llave pública

Mensajepor Semper » Jue Abr 10, 2014 5:30 pm

Buen dia ...

Supongo -no lo precisas- que estás ejecutando la instrucción "OpenSLS X509 ..." directamente desde tu ERP ...

Puedes, si no lo has probado aun, generar un archivo .bat desde tu ERP con las instrucciones necesarias (incluido el "> salida.txt") y ejecutar el mismo en lugar de hacerlo directamente con el "OpenSSL ..."

Saludos,

RickAlanis
Mensajes: 288
Registrado: Jue Ago 04, 2011 9:41 pm

Re: Obtener la llave pública

Mensajepor RickAlanis » Jue Abr 10, 2014 8:59 pm

Semper:
Sí, de hecho, es lo que comento, que si lo hago en la consola de Windows sí me acepta el símbolo ">" para redirigir la salida a un archivo.
Y cuando lo hago desde mi ERP, en algunas instalaciones de Windows (sólo en algunas) no funciona obtener la llave pública desde el StdOut llamado desde mi ERP, tomando en cuenta que instalo el mismo OpenSSL en todos los casos.

Una de las soluciones, como comentas, es crear un .bat "on the fly" y ejecutarlo (incluyendo y el ">" y el nombre del archivo).
Pero también estoy viendo la posibilidad de hacerlo a través de PHP y tener una solución que funcione sin distinción en Mac y en Windows.

Voy a probar primero el PHP y, si no lo veo conveniente, la solución del scriptt. Ya dejaré constancia aquí de lo que hice y cómo quedó.

Gracias y saludos


Volver a “OpenSSL en general (cualquier lenguaje)”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados