AFIP WSFE1 Bravo openssl en Windows

143 views
Skip to first unread message

@gr-sinatra

unread,
Oct 4, 2014, 6:48:07 PM10/4/14
to rub...@googlegroups.com
Hola gente,

Estoy intentando usar la gema Bravo en un entorno Windows , sinatra no rail y tengo problemas con el openssl

El error es "cms is an invalid command" 

No se si el openssl con el parametro "cms" funciona en Windows o si anda solo en Unix

En el entorno windows tengo seteada la variable 
OPENSSL_CONF = "C:\OpenSSL-Win64\bin\openssl.cfg"

El comando que intenta ejecutar la gema es :

    openssl cms -sign -in /dev/stdin -signer $CRT -inkey $KEY -nodetach \
            -outform der |
    openssl base64 -e


Horacio Bertorello

unread,
Oct 4, 2014, 7:53:13 PM10/4/14
to rub...@googlegroups.com
¿Qué versión de OpenSSL estás usando? Las nuevas versiones vienen con CMS incluído. Acabo de checkear con la última versión (Win32 OpenSSL v1.0.1i).

--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Nicolas Cerrini

unread,
Oct 4, 2014, 8:57:00 PM10/4/14
to rub...@googlegroups.com
No lo usé en Windows, pero la instalación de OpenSSL no es trivial en Linux/mac, porque AFIP usa un tipo de encriptación no muy común. 
En mi fork de la gema, en el readme, hay instrucciones. Quizás te sirvan.


--
Nicolás Cerrini
   

@gr-sinatra

unread,
Oct 5, 2014, 8:26:14 PM10/5/14
to rub...@googlegroups.com
Estoy usando la version de openssl 0.9.8e

Tal vez no encuentra el bin pero la variable en windows esta seteada

Matias Owsianik

unread,
Oct 5, 2014, 9:02:58 PM10/5/14
to rub...@googlegroups.com
2014-10-04 19:48 GMT-03:00 @gr-sinatra <prologic...@gmail.com>:
Hola Gabriel

Desde OpenSSL 0.9.8h, CMS viene deshabilitado por default. Tenés que recompilar OpenSSL con enable-cms.

Cuando ejecutás "openssl cms" te tira el mismo error? (cms is an invalid command)

Estás seguro de que estás usando 0.9.8e? Determinaste la versión con "openssl version"?


Matias Owsianik

unread,
Oct 5, 2014, 9:16:09 PM10/5/14
to rub...@googlegroups.com
2014-10-05 21:26 GMT-03:00 @gr-sinatra <prologic...@gmail.com>:
Estoy usando la version de openssl 0.9.8e


Olvidate de lo que tiré en el otro mail. Si estás usando 0.9.8e no te va a funcionar por cms. 

Como bien aclara @leanucci acá: https://github.com/leanucci/bravo#openssl

Para cumplir con los requisitos de encriptación del Web Service de Autenticación y Autorización(WSAA), Bravo requiere OpenSSL en cualquier versión posterior a la 1.0.0a. 
 
Como regla general, basta correr desde la línea de comandos openssl cms 
 
Si el comando cms no está disponible, se debe actualizar OpenSSL.

 


@gr-sinatra

unread,
Oct 6, 2014, 7:11:43 PM10/6/14
to rub...@googlegroups.com
Si, si  ejecuto desde el cmd me tira el mismo error, por lo que dicen los chicos parece que es la versión de openssl, voy a probar actualizarla.Lo que pasa es que la forma de actualizarla que tira leanuchi en git no me funciona creo que porque es para rails y unix

Ahora antes de seguir avanzando , me surge una duda , luego de probar esto en development mi entorno de producción es en HEROKU , les parece que la llamada al openssl va a funcionar en el heroku ?? y otra cosa que note en el codigo de Bravo es que utiliza el comando cUrl , que creo con temor a equivocarme que es un comando de Unix, va a funcionar eso en windows y en Heroku después ??

;:) cuantos interrogantes 

Luis Lavena

unread,
Oct 6, 2014, 7:27:18 PM10/6/14
to rub...@googlegroups.com
Hola Gabriel,

2014-10-06 20:11 GMT-03:00 @gr-sinatra <prologic...@gmail.com>:
Si, si  ejecuto desde el cmd me tira el mismo error, por lo que dicen los chicos parece que es la versión de openssl, voy a probar actualizarla.Lo que pasa es que la forma de actualizarla que tira leanuchi en git no me funciona creo que porque es para rails y unix


RubyInstaller (Ruby en Windows) viene con soporte para OpenSSL 1.0.0, pero no tiene "openssl.exe" (el ejecutable de linea de comando)

Te recomiendo bajar el paquete que tiene el binario en lugar de usar un OpenSSL tan viejo.

Aqui tenes el ultimo post del grupo de RubyInstaller que tiene los links de descarga:


Ahora antes de seguir avanzando , me surge una duda , luego de probar esto en development mi entorno de producción es en HEROKU , les parece que la llamada al openssl va a funcionar en el heroku ?? y otra cosa que note en el codigo de Bravo es que utiliza el comando cUrl , que creo con temor a equivocarme que es un comando de Unix, va a funcionar eso en windows y en Heroku después ??


No entiendo mucho sobre Bravo (o de AFIP si vamos a los detalles) pero esto es lo que entiendo:

Bravo usa Savon para conectarse con AFIP

Savon usa HTTP y OpenSSL para conectarse con AFIP y poder usar certificados sobre la conexión.

El único punto que veo en el codigo es el script de bash:


Ese script creo solo lo necesitas para generar los datos de conexión y no tenes que estar ejecutandolo todo el tiempo, por lo que no deberias tener problemas en deployar a Heroku.

Si la funcionalidad de CMS requiere una compilación especial de OpenSSL, entonces *no* funcionaria en Heroku, o basicamente en ningún lado.

Saludos,
-- 
Luis Lavena
AREA 17
-
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry

Horacio Bertorello

unread,
Oct 6, 2014, 7:38:56 PM10/6/14
to rub...@googlegroups.com
Creo que también existe la posibilidad de crear un buildpack personalizado con un Ruby linkeado a la versión más nueva de OpenSSL.

Si necesitás cURL en Windows, podés descargarlo.

--

@gr-sinatra

unread,
Oct 8, 2014, 12:20:52 PM10/8/14
to rub...@googlegroups.com
Gracias Luis,

Ya pude instalar el openssl 1.0 

Pero se me presentan los siguiente obstáculo todos en el script de bash wsaa-client.sh 

Cuando trata de ejecutar el openssl no funciona en windows

Intenta hacer :

    echo "$TRA" |
    openssl cms -sign -in /dev/stdin -signer $CRT -inkey $KEY -nodetach \
            -outform der |
    openssl base64 -e

y me lanza el error 
Can't open input file C:/Program Files (x86)/git/dev/stdin

supongo que porque no existe /dev/stdin en windows

Tambien hay unas llamadas al curl que creo tampoco funcionan (baje el curl.exe a la carpeta C:\Ruby193\bin\) 

la ejecución es :

echo "$REQUEST" |
    curl -k -H 'Content-Type: application/soap+xml; action=""' -d @- $URL
  )
echo "$REQUEST"
Reply all
Reply to author
Forward
0 new messages