Ingeniero Técnico en Informática
Regístrate para votar
SSL en Tomcat
Introducción
En este tutorial se describe cómo configurar Tomcat para acceder a las aplicaciones web empleando HTTP sobre SSL.Vamos a utilizar la técnica sencilla,
que es la que se describe en http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html.Consiste en utilizar la herramienta keytool, distribuida con el kit de desarrollo de Java,
para generar un certificado autofirmado del servidor.También será necesario cambiar la configuración del fichero server.xml para activar un conector que permitirá
acceder a Tomcat a través de https.
Software necesario
La herramienta keytool se encuentra en el directorio bin de la instalación j2sdk. Si estamos usando una versión anterior a la 1.4, debemos descargar
la extensión de http://java.sun.com/products/jsse/ e incluir los jars en el directorio $JAVA_HOME/jre/lib/ext.
Para los usuarios de una versión igual o superior a la 1.4, no es necesario descargar nada porque ésta utilidad ya viene incluida.
Configurando el server.xml
Lo único que tenemos que hacer es descomentar la parte del siguiente elemento Connector:
<!-- 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" />
-->
Con esto conseguimos activar el uso de SSL en el puerto 8443. No se solicita certificado al cliente durante el establecimiento de la conexión SSL (clientAuth = “false”),
por tanto, no es necesario cambiar nada en el navegador web que usemos, aunque si hay que crear el almacén de claves en el servidor.
Creando el almacén de claves y un certificado autofirmado
Abrimos una consola y ejecutamos:
%JAVA_HOME%\bin\keytool –genkey –alias tomcat –keyalg RSA

Nos pedirá una serie de datos para configurar el certificado. Lo primero que nos pide es la contraseña para el almacén de claves:

La clave por defecto utilizada por Tomcat es “changeit” y es la que introduciremos. Si queremos usar cualquier otra clave, lo único que tenemos que hacer
es añadir al Connector el parámetro keystorePass
especificando la clave a usar.
<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"
keystorePass=”mi_clave”/>
A continuación nos pide nuestro nombre, el nombre de nuestra unidad de organización, el nombre de nuestra organización, la ciudad o localidad, el estado
o provincia, y el código del pais. Nos pregunta si los datos introducidos son correctos e introducimos si.

A continuación nos pide la contraseña clave para <tomcat>. Aunque nos permite introducir una distinta, siempre debemos poner la misma contraseña
aquí que la que tenemos en nuestro almacén de claves (Nos da la opción de pulsar INTRO para este efecto).
Nota: Esto se indica en la ayuda de Tomcat en
http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html.
Tomcat lanzaría un java.io.IOException:
Cannot recover key si no usaramos la misma clave

Y ya hemos terminado, el proceso nos ha creado un archivo .keystore en el home del usuario:
C:\Documents and Settings\user en sistemas Windows XP
C:\Winnt\Profiles\user en sistemas multi-usuario Windows NT
C:\Windows\Profiles\user en sistemas multi-usuario Windows 95/98
C:\Windows en sistemas de un sólo usuario Windows 95/98

Tomcat utiliza por defecto este .keystore para buscar los certificados (el que se encuentra en el directorio home del usuario). Si quisieramos utilizar un almacén situado
en otra ubicación, unicamente debemos añadir al
Connector el parámetro keystoreFile
especificando la ruta absoluta al fichero, o una ruta relativa
resuelta a partir del
%CATALINA_BASE%.
Suponiendo que mi fichero se encuentra en C:\keyStores\.mykeystore:
<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=”C:\keyStores\.mykeystore”/>
Suponiendo que mi %CATALINA_BASE% apunta a C:\servidores\tomcat y mi fichero se encuentra en C:\servidores\tomcat\keystores\.mykeystore
<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=”\keyStores\.mykeystore”/>
Ahora, arrancamos tomcat y probamos en el navegador https://localhost:8443 para ver si funciona:

Perfecto, ya tenemos habilitada la configuración SSL en nuestro tomcat.
Acerca del autor
José Carlos López Diaz. Ingeniero en Informática
Visitanos en www.autentia.com
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.
Comentarios
-
2009-11-10 - 23:29:51marthautshEl tutorial esta muy bien... de hecho todo perfecto solo quiero saber porque me sale un error en el certificado Direccion no coincidente. ¿Que hagooooo? o mas bien que hice mal? muchas gracias por su tiempo y ayuda
-
Edson2009-04-06 - 01:38:18 AMHe tratado de habilitar el SSL de Tomcat y no he podido, asesoría estoy tratando de hacer una applicación libre
-
jose raul perez mart2007-02-23 - 11:53:03 PMno he podido probar lo del ssl ya cree el keystore pero hago el siguiente paso de modificar el server.xml y no pasas nada, asesorame porfa








