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.

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.
CARTA PORTE V3.1
ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03
.
Obtener la llave pública
-
- Mensajes: 288
- Registrado: Jue Ago 04, 2011 8:41 pm
Re: Obtener la llave pública
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!
¿Nadie por el foro que conozca más de OpenSSL?
La verdad es que si me parece algo preocupante.
¡Saludos!
- Dado
- Mensajes: 15980
- Registrado: Mar Jul 06, 2010 7:56 pm
Re: Obtener la llave pública
No haz intentado :
OpenSSL x509 -inform PEM -in certificado.pem -pubkey >archivo.txt
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 !!
-
- Mensajes: 288
- Registrado: Jue Ago 04, 2011 8:41 pm
Re: Obtener la llave pública
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
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
-
- Mensajes: 28
- Registrado: Sab Ene 18, 2014 6:13 pm
Re: Obtener la llave pública
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,
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 (172.83 KiB) Visto 31539 veces
-
- Mensajes: 288
- Registrado: Jue Ago 04, 2011 8:41 pm
Re: Obtener la llave pública
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.
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.
-
- Mensajes: 28
- Registrado: Sab Ene 18, 2014 6:13 pm
Re: Obtener la llave pública
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,
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,
-
- Mensajes: 288
- Registrado: Jue Ago 04, 2011 8:41 pm
Re: Obtener la llave pública
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
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