Tomcat SSL con certificado autofirmado en Windows server 2003


Programas necesarios

  1. Java JRE
  2. Tomcat 7.0

Creacion del keystore


¿Qué es un keystore?

Es un "contenedor" de los certificados de seguridad para uso del servidor java , en este caso tomcat 7.0 ,es decir , un archivo que va a servir para guardar los certificado que usa el servidor web a la hora de usar el protocolo HTTPS.

Para habilitar el uso de conexiones seguras por el protocolo https en tomcat seguiremos los siguientes pasos:
Primero procederemos a crear el denominado keystore de certificados para tomcat , es decir , el almacén de claves donde se encuentran los certificados que va a usar nuestro servidor.

Para ello al estar tomcat programado en java, podemos usar una herramienta contenida en el JDK de java,esta herramienta es la keytool.

Crearemos el keystore de la siguiente forma.

  1. Abrimos el cmd
  2. Introducimos el comando
%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA -keystore \path\to\my\keystore
(Java home es la ruta donde está instalado java)
*Si no sabemos o no queremos usar java home haremos lo que sigue

  1. Abrimos el cmd.
  2. Vamos abriendo los directorios hasta conseguir (Usando cd ..):
C:\>
C:\>cd "Archivos de programa"
C:\Archivos de programa>cd Java
C:\Archivos de programa\Java>cd jre7
C:\Archivos de programa\Java\jre7>cd bin
Una vez en bin introducimos el comando para crear el keystore
C:\Archivos de programa\Java\jre7\bin> keytool -genkey -alias tomcat -keyalg RSA
-keystore \path\to\my\keystore\nombreArchivoKeystore
-keystore – Sirve para indicar la ruta donde se creara el archivo

Es importante fijarse bien y que la ruta donde se va a guardar el archivo exista , en el ejemplo la carpeta key hay que crearla si queremos que se guarde en ella.
C:\Archivos de programa\Java\jre7\bin> keytool -genkey -alias tomcat \
-keyalg RSA -keystore "C:\Archivos de programa\Apache Software Foundation\Tomcat 7.0\key\llave"
Introduzca la contrase±a del almacen de claves:
Volver a escribir la contraseña nueva:
┐Cuales son su nombre y su apellido?
  [Unknown]:  entidad
┐Cual es el nombre de su unidad de organizacion?
  [Unknown]:  organizacion
┐Cual es el nombre de su organizacion?
  [Unknown]:  organizacion
┐Cual es el nombre de su ciudad o localidad?
  [Unknown]:  se
┐Cual es el nombre de su estado o provincia?
  [Unknown]:  se
┐Cual es el codigo de pais de dos letras de la unidad?
  [Unknown]:  Es
┐Es correcto CN=entidad, OU=organizacion, O=organizacion, L=se, ST=se, C=Es?
  [no]:  si
 
 
Es muy importante que en el ultimo paso pulsemos enter y no cambiemos la contraseña , si no hacemos esto java lanzara una excepción y el archivo keystore no se creara.
Introduzca la contraseña de clave para <tomcat>
        (INTRO si es la misma contraseña que la del almacen de claves):
Una vez ejecutado este comando se creara un archivo en la ruta especificada, en este caso en la carpeta key se creara un archivo llave.

Este archivo keystore ya contiene un certificado autofirmado para usar en el servidor.

Habilitar ssl en el Tomcat


Para habilitar SSL en tomcat usando la configuración JSSE debemos modificar el conector en el archivo server.xml

El archivo server.xml esta en la ruta
C:\Archivos de programa\Apache Software Foundation\Tomcat 7.0\conf

Como vamos a usar el certificado autofirmado incluido en el keystore creado y como en este tutorial no tenemos la librería APR , el conector usara la configuración JSSE, como podremos ver al ir al archivo server.xml.
DawServerWin.png



















Dentro de este archivo debemos buscar las siguentes lineas , que indican la configuracion actual del conector para el puerto 8443
<!-- Define a SSL HTTP/1.1 Connector on port 8443
This connector uses the JSSE configuration, when using APR,
the connector should be using the OpenSSL style
described in the APR documentation -->
Y debemos modificar el conector para que quede de la siguiente forma,cambiando los parametros de keystoreFile por la ruta donde se encuentra el archivo creado anteriormente y el keystorePass ,que no es otra que la contraseña que le pusimos al archivo keystore.
<Connector protocol="org.apache.coyote.http11.Http11Protocol"
port="8443" SSLEnabled="true" maxThreads="200"
scheme="https" secure="true"
keystoreFile="ruta archivo keystore"
keystorePass="contraseña keystore" clientAuth="false"
sslProtocol="TLS" />
Después de esto guardamos y reiniciamos el tomcat y nos vamos al navegador que no sea chrome por ejemplo firefox y ponemos la dirección:
https://direccion_servidor:8443/
nos saldrá que el certificado del servidor no es seguro , procedemos hacer click en entender los riesgos y añadirlo como excepción de seguridad.

Aun así nos seguirá apareciendo el https tachado y tendremos que confiar en el certificado, para ello pulsamos en entiendo los riegos y añadir excepción de seguridad , y ya aparecerá la pagina sin ninguno problema.