Emisión de certificados SSL con Apache Tomcat, Java, JSP y Netbeans

05 abril 2009


Un buen amigo mio necesitaba emitir certificados SSL (Secure Socket Layers) para la admisión de usuarios a sitios con protocolo http seguro (HTTPS) para un proyecto de una materia de la universidad. Como el novato que aun soy, empecé a leer al respecto y encontré una forma de hacerlo. Logré implementarla y traigo para Uds. este pequeño y sencillo tutorial para emitir este tipo de certificados utilizando Apache Tomcat, Java, JSP y Netbeans, todo sobre un sistema operativo Windows Vista.

Las versiones que se tienen instaladas son:

  • JDK 1.6.0_05
  • Netbeans 6.5
  • Apache Tomcat 6.0.18
Ahora, para generar el certificado SSL utilizaremos la herramienta incluida en el Java Development Kit, JDK llamada KeyTool. Para acceder a ella tenemos que acceder al directorio que contiene la versión del JDK. En Windows, es la siguiente ruta:

%JAVA_HOME%\bin\keytool.exe -genkey -alias tomcat -keyalg RSA

Con este comando y sus argumentos, estamos ordenando que generaremos un nuevo certificado o una nueva key, con el alias tomcat. Luego nos pedirá una serie de datos que son los que conformarán el almacén de claves. La clave que viene por defecto con el alias de tomcat es:

changeit


Por el momento si estás aprendiendo conserva esta clave y así no tendrás problemas para crear más certificados. Cuando termines de ingresar toda la información digita OK para que se valide. Para mantener la misma clave (es decir changeit) solo debes de presionar Enter.

Al finalizar este paso el KeyTool genera un archivo que almacena la lleva, es decir un .keystore. Es un poco problemático encontrar en donde lo guarda, sin embargo el keytool lo aloja siempre en la carpeta de usuario, en mi caso en Windows Vista se alojó en:

C:\Users\miNombreUsuario

En Windows XP sería:
C:\Documents and Settings\miNombreUsuario

En Ubuntu sería
/home/miNombreUsuario

Ahora debemos configurar el servidor Tomcat para aceptar y habilitar el puerto SSL, que por defecto es el 8443. Dentro de la carpeta del apache-tomcat-6.0.18 localizamos el archivo server.xml y descomentamos unas líneas que aparecen por defecto con carácter de comentarios y es el conector del puerto 8443. Le quitamos los comentarios unicamente y le agregamos un atributo para indicar cuál sera el keystore, de esta manera:

Iniciamos ahora el servidor Tomcat de esta manera:
C:\Servidorapache-tomcat-6.0.18\bin\startup.bat

Y ahora digitamos en el navegador https://localhost:8443/ y ya accederemos al index de localhost pero con protocolo http seguro, de esta manera:



Se añade la excepción en el certificado y ya se podrá ver como la imagen superior. Aprecien también en la barra de direcciones el protocolo del sitio (HTTPS) y en la barra de estado de Firefox vean que tiene un pequeño candado, denotando que es un sitio seguro.

El tercer y último paso es crear una aplicación web con JSP y Netbeans, utilizando Tomcat como servidor de dicha aplicación. La creamos con Netbeans, y modificamos el archivo web.xml agregando estas etiquetas, todas dentro del cierre de la etiqueta web-app. De esta manera:

<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
Y es todo! Ahora este sitio se podrá ser accedido desde protocolo HTTPS. La prueba luciría así. Noten el protocolo en la barra de direcciones, así como el pequeño candado:



Muchas gracias a Armando Díaz y su Blog Ubuntu de El Salvador, ya que este tutorial está basado en su artículo.

0 comentarios: