Fecha de creación del tutorial: 2007-02-21
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
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.
| Autor | Mensaje de usuario registrado |
|---|---|
| marthautsh |
Fecha de envío: 2009-11-10 - 23:29:51 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 |
| Autor | Mensaje de usuario anónimo |
|---|---|
| Edson |
Fecha de envío: 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 |
| jose raul perez mart |
Fecha de envío: 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 |
- Puedes inscribirte en nuestro servicio de notificaciones haciendo clic aquí.
- Puedes firmar en nuestro libro de visitas haciendo clic aquí.
- Puedes asociarte al grupo AdictosAlTrabajo en XING haciendo clic aquí.
- Añadir a favoritos Technorati.
Esta obra está licenciada bajo licencia Creative Commons de
Reconocimiento-No comercial-Sin obras derivadas 2.5
Recuerda
Autentia te regala la mayoría del conocimiento aquí compartido (Ver todos los tutoriales). Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseño ... y muchas otras cosas.
¿Nos vas a tener en cuenta cuando necesites consultoría o formación en tu empresa?, ¿Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros?
Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...
Autentia = Soporte a Desarrollo & Formación.
Tutoriales recomendados
| Nombre | Resumen | Visitas | Valoración | Votos | ||
|---|---|---|---|---|---|---|
| Patrón Visitor con commons-collections y sus Closures | En este tutorial vamos a ver cómo podemos usar la librería de Apache commons-collections para implementar de forma sencilla un Visitor que se recorra todos los elementos de una colección. | 2010-01-14 | 438 | - | - | ![]() |
| ¿Qué son el cloud computing y google app engine? | El presente tutorial trata de responder a muchas preguntas centrándose en una nube muy de moda, el Google App Engine | 2009-12-17 | 1645 | Muy bueno | 5 | ![]() |
| Apache + Tomcat: Balanceo de carga y alta disponibilidad | Este tutorial trata de cómo configurar un conjunto de servidores para que las peticiones de los usuarios a los servicios se distribuyan entre los servidores | 2009-12-09 | 1754 | - | - | ![]() |
| Instalación de Glassfish 2.1 | En este tutorial nos veremos cómo instalar el servidor de aplicaciones GlassFish. Además veremos los primeros pasos, como entrar en la consola de administración del servidor, y desplegar una aplicación EAR (Enterprise Application) | 2009-11-11 | 2705 | Bueno | 1 | ![]() |
| EJB 3.0 y pruebas unitarias con Maven, JUnit 4 y Apache Open EJB. | Continuamos buscando una buena solución para llevar a cabo test de EJBs, ahora con OpenEJB. | 2009-09-23 | 2434 | - | - | ![]() |
| EJB 3.0 y pruebas de persistencia con Maven, JUnit 4 y Embedded JBoss sobre Java 6. | Damos continuidad al tutorial EJB 3.0 y pruebas unitarias con Maven, JUnit 4 y Embedded JBoss Java 6, probando el llevar a cabo un test de persistencia de un EJB de entidad, bajo soporte de EJB de servicio que implementa el patrón dao, en el mismo entorno | 2009-09-14 | 2692 | Muy bueno | 1 | ![]() |
| Instalación de Liferay en Tomcat existente | En este tutorial vamos a solventar el problema de instalar Liferay cuando ya contamos con un Tomcat existente y necesitamos que Liferay conviva con el resto de aplicaciones que corren en el servidor. | 2009-09-12 | 2933 | Bueno | 4 | ![]() |
| Joomla 1.5. Instalación y configuración | Veamos en detalle cómo instalar Joomla 1.5 y aplicar algunas configuraciones posteriores de las disponibles en este CMS | 2009-08-14 | 9256 | - | - | ![]() |
| Instalación de VirtualBox PUEL | En este tutorial os enseñamos a instalar VirtualBox como alternativa a VMWare para la virtualización de sistemas operativos. | 2009-08-03 | 4118 | Muy bueno | 2 | ![]() |
| Introducción a TortoiseSVN | En este tutorial vamos a ver cómo interactuar de un modo sencillo con repositorios subversion a través de TortoiseSVN | 2009-05-11 | 5090 | Bueno | 1 | ![]() |
Nota:
Los tutoriales mostrados en este Web tienen como objetivo la difusión del conocimiento.
Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores.
En algún caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueños. Si algún afectado desea que incorporemos alguna reseña específica, no tiene más que solicitarlo.
Si alguien encuentra algún problema con la información publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolución.







