jueves, 29 de enero de 2009

Tomcat +ssl +jboss

Es un asco...
recorri bastantes foros buscando la bendita forma de como hacerlo...
hasta que di con una solución...
la mas practica y simple que habia visto...
por mi parte tambien pense que se podia hacer, pero me deje guiar por la documentación.
beps
solución simple.


openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 365
openssl pkcs12 -export -in cert.pem -inkey key.pem -out cert.p12 -name

Asegurence de ponerle clave al certificado.

posteriormente, modificar el server.xml de tomcat.

<connector port="8443" address="${jboss.bind.address}" maxthreads="100" strategy="ms" maxhttpheadersize="8192" emptysessionpath="true" scheme="https" secure="true" clientauth="false" keystoretype="PKCS12" keystorefile="/path/al/archivo/conf/ssl/cert.p12" keystorepass="LA_PASS_QUE_LE_PONEMOS_AL_CERTIFICADO" sslprotocol="TLS">


Despues reiniciar el servicio.

/opt/jboss-4.2.2.GA/bin/shutdown.sh -S
nohup /opt/jboss-4.2.2.GA/bin/run.sh -b 0.0.0.0 &

realizamos un nmap y que lindo

el puerto 8443 esta en escucha...
abrimos firefox y aceptamos el certificado autofirmado y felices para siempre :D

Para dejarlo transparente...
deben modificar el mod_jk, pero eso sera en otra ocación miren que ahora estoy chato
xD
bye

viernes, 23 de enero de 2009

Dolor de cabeza por ruby +mongrel +windows +postgresql

Como se hace mensión en el titulo, estos 2 ultimos dias han sido algo desagradables...

Comenzamos el dia en una prestigiosa empresa vinicola en a la cual debia levantar una aplicación escrita en ruby, pero en un ambiente windows.

Lo primero que se me vino a la mente fue...
"Descargar la aplicación y derivados, hacer un par de configuraciones y en 1 hora deberia estar listo, incluyendo las pruebas para que el cliente estubiese conforme".
Resultado "LAS PELOTAS"
6 horas me tomo el chiste...
Detalle de la aventura...

Llevaba en mi buen pendrive las aplicaciones o sea:
- Ruby 1.8.x
- PostgreSQL 8.3.x
- Apache 2.2.x

Comenzamos la instalación con ruby...
Ningún problema, pero para mi desagradable sorpresa, necesitaba algunas librerias las cuales se instalaban via "gem", lo cual en esa situación me complico un poco debido a que en la empresa a la cual fui, por defecto tienen denegado el acceso a internet excepto el puerto 80...
Desconosco el protocolo de comunicación que utiliza 'gem', pero el punto es que no pude instalarlo tan rapido como ubiese querido...

Ya...
Nos comunicamos con el administrador de red para solicitar permiso y que nos permitiera el acceso total a la ip que tenia ese equipo.
La buena noticia es que se logro la comunicación necesaria para que comenzase la descarga.
La mala noticia es que el enlace internacional que tiene esa empresa es un asco.

Mientras que se realizaba la descarga de las librerias, nos encontramos con otra desagradable sorpresa...
El paquete de instalación de postgres al finalizar la instalación encontraba un error y no permitia continuar con esta y comenzaba a desinstalarse...
"Bendita suerte..."
Lo unico que se me ocurrio en ese momento fue downgradear la versión la cual se iba a instalar en dicho equipo...
o sea...
volver a la versión 8.2.x, la cual al comenzar a descargar nos demoramos cerca de 3 horas en bajar todas las librerias necesarias de ruby y tambien postgres 8.2.x.

3 horas despues estaba instalando postgres 8.2.x, el cual al finalizar la instalación me arrojo un error de permisos... (lo raro es que estabamos con un usuario el cual tenia privilegios de administrador), pero en fin "Es windows" y ya no me sorprende los errores tontos que este trae...
Le pregunte la password de administrador, cosa que no tenia idea...
Despues de llamar a la mesa de ayuda de la empresa, intentamos todas las contraseñas posibles que ellos nos decian, PERO NINGUNA FUNCIONO!!!...
ahora viene la parte (Ley de murphy).
Intentamos sin usar clave y voila!, funciono...
En fin, se instalo postgres sin ningún inconveniente.

Pero...
Para mi desagradable sorpresa, nos encontramos con un problema con las librerias de postgres, ya que no se instalaba de la misma forma que en Unix.

En windows el paquete se llama:
ruby-postgres
y en Unix solo se llama:
postgres

o sea... debiamos instalar en windows de la siguiente manera...
gem install ruby-postgres
en vez de:
gem install postgres

En teoria, una vez realizado esto, el tema de la sincronización con la base de datos deberia quedar resuelto.
Cosa que no fue tan asi...
debido a que nos pedia algunas librerias de postgres, mas conocidas como las "postgres-dev" en Unix.
La solución encontrada por aca fue que debiamos realizar una copia de X librerias al directorio de Ruby.
En este caso C:\ruby\bin desde C:\path\postgresql\bin
estos son:

- comerr32.dll
- krb5_32.dll
- k5sprt32.dll
- libeay32.dll
- libpq.dll
- libiconv2.dll
- libintl3.dll
- ssleay32.dll
- gssapi32.dll

Yo felizmente pensaba...
Por fin... ahora levanto el servicio y chao!...
Me limito a decir que solo me que quede con las ganas, ya que al correr el comando:
// En la directorio de la aplicación.

mongrel_rails start -d -p 3000 -e production
Y me sorprendo con lo que me arroja de vuelta es un lindo error que dice que win32 no soporta este servicio...
Fue cuando dije...
"Este sera un laaaaaaargo dia..."
Afortunadamente, san google siempre esta ahi cuando tenemos problemas.
No recuerdo con exactitud que pagina es pero, pongo la solución.

mongrel_rails service::install -N NOMBRE_APLICACION -c "C:\APLICACION" -p 3000 -e production

seguido por:
net start NOMBRE_APLICACION

y listo.
Problema solucionado.
Ahora el tema era que se iniciara automaticamente...
Con la primera linea, si se percatan dice... "service::install"
con esto creamos una entrada en "services.msc", y solo nos faltaria modificarla para que el servicio se iniciara automaticamente al prender el equipo.

Nos fuimos a Inicio, ejecutar y ahi escribimos: services.msc
buscamos el nombre que le pusimos al servicio... En este ejemplo "NOMBRE_APLICACION"
y lo editamos, y le decimos que se inicie automaticamente...

Despues de realizar unas pruebas con internet explorer, decidimos a cambiar a firefox
ya que no habria por IE, pero si con firefox...

Bueno...
demostrado que el tema fue solucionado, el cliente se quedo tranquilo
Fin.

NO QUIERO SABER MAS DE WINDOWS!!!