Estás en:

informaciónDESARROLLADO POR:

Ingeniero Técnico en Informática 

Fecha de publicación del tutorial: 2007-02-21
Tutorial visitado 15.366 veces15.366
Descargar el tutorial en PDF


Regístrate para votar
Share |

SSL en Tomcat

  1. 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.



  1. 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.


  1. 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.


  1. 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.



  1. Acerca del autor

José Carlos López Diaz. Ingeniero en Informática

jclopez@autentia.com

Visitanos en www.autentia.com





Anímate y coméntanos lo que pienses sobre este TUTORIAL:

Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.


(Sólo para usuarios registrados)

» Registrate y accede a esta y otras ventajas «

Comentarios

  1. 2009-11-10 - 23:29:51
    marthautsh

    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

  1. Edson
    2009-04-06 - 01:38:18 AM

    He tratado de habilitar el SSL de Tomcat y no he podido, asesoría estoy tratando de hacer una applicación libre

  2. jose raul perez mart
    2007-02-23 - 11:53:03 PM

    no 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