El Rincón de Pish

Octubre 19, 2007

Instalando Tomcat5.5 con SSL en mi Debian Etch (nota para Ubuntu también)

Archivado en: Linux — rolandpish @ 8:52 pm
Tags: , , , ,

Saludos a todos.

Con el fin de adentrarme en el aprendizaje de JSP y servlets, quise instalar en mi Debian Etch lo necesario para echar a andar esta tecnología. A continuación mostraré los pasos que seguí para montar un servidor web Tomcat con soporte a páginas seguras (SSL). He querido redactar este artículo para que pueda ser de utilidad a aquellos que deseen tener Tomcat sin necesidad de mucha alharaca.
Como nota adicional, quiero mencionar que utilicé estos mismos pasos en la distribución Ubuntu (Feisty y Gutsy) y casi todo es igual con excepción de un ajuste que tuve que hacer para que me funcionara (ver el anexo en el paso 4).

1. El primer paso fue bajar el JDK 6 (Java Development Kit) de la página de Sun. El archivo tiene extensión .bin y mide aproximadamente 65MB (no baje el que tiene extensión .rpm.bin ya que ese archivo es para ejecutarse en distribuciones basadas en RedHat).

2. Me convertí en root, copié el instalador del JDK en la carpeta /opt y lo ejecuté para instalarlo. El JDK quedó instalado en /opt/jdk1.6.0

3. El siguiente paso fue declarar la variable de ambiente JAVA_HOME. Edité el archivo /etc/environment y al final del archivo agregué esta línea:

JAVA_HOME="/opt/jdk1.6.0"

Además consideré importante agregar esta ruta a la variable PATH. Edité el archivo /home/pish/.bashrc y agregué la siguiente línea al final del archivo:

PATH="$PATH:/opt/jdk1.6.0"

Guardé los cambios en ambos archivos y reinicié la sesión para que este cambio surtiera efecto.

4. Seguidamente procedí a instalar el servidor web Tomcat 5.5 con los siguientes comandos:

apt-get install tomcat5.5 tomcat5.5-webapps

Nota para Ubuntu: al final de la instalación de Tomcat, se muestra un error 255. Además noté que si trataba de iniciar el servicio de Tomcat con el comando: /etc/init.d/tomcat5.5 start el servicio nunca iniciaba. Después de invertir mucho tiempo buscando documentación y muchas tazas de café, no tuve forma de que funcionara. Entonces encontré una solución que sí funcionó a las mil maravillas. Lo que hice fue editar el archivo /etc/init.d/tomcat5.5 para que ejecutara directamente a startup.sh y shutdown.sh ubicados en la carpeta /usr/share/tomcat5.5/bin. Por tanto, el archivo /etc/init.d/tomcat5.5 quedó con el siguiente contenido:

case "$1" in

start)

/usr/share/tomcat5.5/bin/startup.sh
;;

stop)

/usr/share/tomcat5.5/bin/shutdown.sh
;;

restart|force-reload)

$0 stop
$0 start
;;

*)

log_success_msg "Usage: $0 {start|stop|restart|force-reload}"
exit 1

;;

esac
exit 0

5. Ok, lo siguiente fue editar el archivo de usuarios de tomcat para agregar el rol de manager y el usuario correspondiente (admin). El archivo de usuarios es /usr/share/tomcat5.5/conf/tomcat-users.xml y quedó de la siguiente manera:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>

<role rolename="manager"/>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="admin" password="admin" roles="manager"/>
<user username="role1" password="tomcat" roles="role1"/>

</tomcat-users>

6. Ya casi para finalizar, quise habilitar el soporte para páginas seguras (SSL) en mi Tomcat. Esta fue la parte que más me costó. Lo que yo realmente quería era habilitar SSL más que todo con fines de prueba; por tanto consulté varios recursos en Internet, algunos estaban muy complicados, otros no tenían lo que yo necesitaba. Así que tomé un poco de cada documento hasta que logré lo que necesitaba. Loggeado como root ejecuté lo siguiente para tener un certificado temporal para fines de prueba y de paso crear su respectivo depósito de llaves:

$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA

(OJO: el símbolo de dólar al inicio debe digitarlo)

Estas fueron mis respuestas a las preguntas que me hizo la herramienta keytool:

Contraseña del almacén de claves: miclave
Nombre y apellido (Common Name): localhost
Nombre de unidad de organización: Personal
Nombre de la organización: Personal
Nombre de su ciudad o localidad: Ciudad
Nombre de estado o provincia: Provincia
Código de país de dos letras: CR
Contraseña clave para tomcat: miclave

 

Esto va a generar el archivo siguiente: /root/.keystore que es el archivo con la información que se acaba de generar.

7. Ok, estuve leyendo que en el paso anterior, Tomcat espera que la contraseña que uno digite sea: changeit (que es su predeterminada); sin embargo, a mí siempre me gusta personalizar las cosas a mi gusto, por tanto el siguiente paso es necesario para que el conector SSL de Tomcat reconozca la contraseña que digité con anterioridad, es decir: miclave. Para esto abrimos el archivo /etc/tomcat5.5/server.xml y buscamos la siguiente entrada:

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<!--
<Connector port="8443" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />

-->

Y la modificamos para que quede así:

<!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
<Connector port="8443" maxHttpHeaderSize="8192"

maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/root/.keystore" keypass="miclave" />

 

Como se puede ver, lo que hice fue borrar los caracteres de comentarios con el fin de habilitar el conector y además incluí dos nuevos parámetros:

keystoreFile (ruta y nombre del archivo con el depósito de llaves)
keypass (clave que digité durante el proceso de generación de llaves y certificado)

Y con esto el conector en el puerto 8443 va a leer el almacén de llaves en el archivo /root/.keystore con la clave digitada: miclave.

8. Finalmente se me ocurrió proteger el archivo /etc/tomcat5.5/server.xml para que nadie lo leyera, ya que como se puede observar en el paso anterior, se puede leer la contraseña del depósito de llaves (miclave). Por tanto ejecuté lo siguiente:

chown tomcat55:nogroup /etc/tomcat5.5/server.xml

(para hacer al usuario tomcat55 propietario de dicho archivo); y luego ejecuté:

chmod 600 /etc/tomcat5.5/server.xml

9. Reinicié el servidor tomcat de esta manera:

/etc/init.d/tomcat5.5 restart

10. Por último, probé ir a las siguientes direcciones en el navegador con el fin de probar Tomcat:

http://localhost:8180
https://localhost:8443

Como se puede observar, esta no es una guía experta. Lo que yo pretendía era simplemente levantar el servidor web Tomcat de la manera más simple posible. A partir de acá se puede consultar documentación más técnica para mejorar y “tunear” el Tomcat de manera más personalizada.

Bueno, espero que esta información pueda serles útil.

Nos vemos…

Aún no hay comentarios »

Aún no hay comentarios.

Canal RSS de los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Tienes que iniciar sesión para escribir un comentario.

Blog de WordPress.com.