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:
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.
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:
si no usaramos la misma clave
Cannot recover key
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:
Suponiendo que mi
%CATALINA_BASE% apunta a C:\servidores\tomcat y mi fichero se
encuentra en C:\servidores\tomcat\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
El 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
falta algo.. solo funciona el puerto 8443 por http pero https no.