Java + NetBeans + SSL + Tomcat

Antes que nada debo decir que no soy para nada un experto en java, de hecho estoy aprendiendo, esta entrada es solo para recordarme la forma de hacer esto y por si algun compañero de clase quiere simplificarse la vida.

Dicho esto aclaro, que no podre ayudar a los usuarios con respuestas de los posibles (gran cantidad probablemte) errores que se den ya que como dije anteriormente igual estoy aprendiendo de hecho esta investigación ha sido casi una pesadilla horas y horas de sufrimiento hasta que logre hacerlo con lugares como locualo, adictosaltrabajo, entre otros

OK la cuestion es esta, tengo un proyecto de clase en el cual solicitaban crear un sitio en java > NetBeans, que manejara Secure Sockets Layer (SSL).

Paso 1  tener instalado obviamente JDK (en mi caso 6.x), NetBeans (en mi caso 6.5) y Tomcat (en mi caso 6.0.18) que ya esta incluido con el netbeans of course UBUNTU ya q sobre el estoy trabajando, solo es de macarlo para instalarlo. luego de asegurnos que tenemos lo mencionado, nos dispondremos a generar nuestro certificado de seguridad, hay alternativas como openssl pero me funciono despues de tanto con keytool que es una de las herramientas incluidas en la jdk, bueno para empezar abrimos una terminal y digitamos:

keytool -genkey -alias tomcat -keyalg RSA

Luego nos solicitara datos para crear el almacen de claves y otros, importante muy importante para hacerte faciles las cosas, si estas aprendiendo, el password del almacen te sugiero ocupes el que viene por defecto en tomcat, me refiero a:

changeit

Ok luego la demas información que te solicita debes llenarla, al final te pedira una confirmación que los datos estan OK, debes digitar si para proceder.

Nuevamente algo importante, nos solicita la contraseña para <tomcat>, es fundamental si eres primerizo, que el password coincida con el de tomcat (changeit), asi  nos evitaremos mas investigaciones, pruebas, errores, etc. asi que esa es mi recomendación, puedes solo presionar enter y automaticamente toma la clave de el almacen.

hasta ahora vamos bien, antes de continuar y esto me dio muchos dolores de cabeza, el archivo que genera es .keystore y esta oculto, la localización de este (por lo menos lo estandar) es en /home/<usuario>/..keystore, esta oculto asi que debes de habilitar elementos ocultos en Nautilus.

Paso 2 es configurar el servidor web Tomcat para aceptar y habilitar puerto con SSL, por si tenemos iniciado el servicio, lo mejor es detenerlo, para ello digitas en la consola:

‘/home/armando/apache-tomcat-6.0.18/bin/shutdown.sh’

entonces dentro del home siempre, debes acceder a la carpeta apache-tomcat-6.0.18/conf, dentro de esta se encuentra el server.xml, lo editaremos con gedit y habilitaremos unas lineas que por defecto estan comentarizadas, me refiero al apartado de Connector en el puerto por decto «8443», asi lo dejaremos, basta solo descomentarisarlo y agregar un atributo mas al xml keystoreFile=»/home/armando/.keystore», te debería quedar mas o menos asi:

<Connector port=»8443″ protocol=»HTTP/1.1″ SSLEnabled=»true»
maxThreads=»150″ scheme=»https» secure=»true»
clientAuth=»false» sslProtocol=»TLS» keystoreFile=»/home/armando/.keystore»/>

Obviamente con tu cuenta usuario en Ubuntu.guardamos el archivo y salimos. Ahora nos toca iniciar el servicio de tomcat para verificar que los cambios se hayan hecho y que tenemos acceso, para ello digitaremos en la consola:

‘/home/armando/apache-tomcat-6.0.18/bin/startup.sh’

Estamos listos entonces para hacer la prueba, entonces dentro del navegador digita la siguiente direccion:

https://localhost:8443/

como observaran el http es presedido por la letra «s», lo cual nos indica que estamos entrando a un sitio con certficado ssl, es normal que te arroje un error ya que el certificado que creamos es de prueba, solo debes agregar la excepcion (el link en la parte inferior) he aqui una imagen.

errorssl

luego de agregar la excepcion accederas a la pagina de inicio de tomcat.

Bueno hasta ahora todo bien, es mas facil siguiendo un manual como esta XD, ok nos toca hacer una aplicacion burda en netbeans, para probarlo, pero antes de hacer algo mas se debe iniciar tu equipo ya que a mi me daba errores en netbeans porque el puerto ya estaba en uso, puedes dar kill sobre el proceso pero lo mas facil es reiniciar.

Paso 3

Luego de reiniciar abres tu netbeans y creas un proyecto Java Web, escribes el nombre del proyecto y como server obviamente Apache Tomcat, luego finalizar.

Ya tienes creado el sitio con una pagina jsp con cabezera Hello World, como el objetivo de este mini tuto no es en si programar el sitio con esto nos basta, toca modificar el archivo web.xml para agregar las politicas de seguridad, para ello en la ventana proyects abres el nodo configuration files  y abres el archivo web.xml. a este se le debe de agregar antes del cierre de etiqueta de web-app las siguientes lineas:

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

guardas el proyecto y aleluya…. ya puedes ejecutarlo y ver el sitio ya con el certificado.. ufff vaya que me costo un poco por lo menos 6 horas de tiempo, ya que como todo en la vida la documentación no esta muy clara (o los simples mortales no la entendemos bien XD).el resultado visto en imagen:

jspssl

OK eso es todo espero sirva a alguien, por lo menos a mi si que me servira.

8 comments so far

  1. Daniel M on

    Esta muy interesante tu turorial.
    Muchas gracias por compartirlo.

    • armandodiaz on

      no hay de que Daniel.
      Saludos

  2. Mario on

    Hola, buen dia desde México

    Antes que nada muchas grasias por el manual, esta muy bueno, una pregunta ya que mi tomcat funciona con ssl y mi protocolo https ¿Cada ves que entre a una direccion hospedada en mi tomcat tengo que agragar una excepción?
    por ejemplo digamos que tengo que hacer 3 aplicaciaones con jsp´s, y mi loggin llama a una pagina con protocolo https, en cada una de las 3 aplicaciones que tengo que desarrollar, ¿Para cada una tengo que agregar una excepcion o basta con la configuracion de mi xml para cada proyecto en mi WEP-INF para que acepte el navegador ir hacia esa pagina sin pedirme agragar una excepcion?
    Bueno te aseguro que trate ser lo mas claro posible,
    espero puedas entender mi duda y lo mas importante, contestarla.

    Bueno de antemano grasias!!!
    Suerte!!!

  3. armandodiaz on

    Hola Mario, como mencione en el articulo tambien estoy aprendiendo,por lo que entiendo solo la primera vez se tendra que hacer la excepcion de cada proyecto que tengas.
    Saludos

  4. Eduardo on

    Buen tutorial, esta bien explicadito, ahorita estoy trabajando con netbeans +Mysql pero en windows,y me gustaria pasarme a Linux. Si tenes algo mas en el Netbeans por favor publicatelo

    Saludos

  5. Elizabeth on

    Antes que nada muchas gracias por el manual, es muy interesante y esta muy bien explicado, habia estado revisando otros tutoriales y me revolvi un poco. Una pregunta hay alguna manera de hacer que el archivo .keystore dure mas tiempo, alguna manera de modificarlo?????????????????????. Gracias

  6. Jose on

    Hola la verdad llevo una semana desde que mude a linux y tengo variiaspreguntas no se si me puedes agregar al msm con el correo que te propociono aqui de antemano gracias

  7. Maria Isabel on

    Gracias! funciono correctamente. Sigue Asi!


Replica a Daniel M Cancelar la respuesta