Enable SSL (Secure Socket Layer) in Apache Tomcat (5.5, 6 y 7)

Activar SSL en Apache Tomcat (5.5, 6 y 7)

Secure Socket Layer (SSL) es un mecanismo que permite a los navegadores comunicarse con los servidores web a través de una conexión segura. Para activar SSL en Apache Tomcat es necesario utilizar un certificado del lado de servidor con el formato JKS, PKCS11 o PKCS12 <– este último es el estandar web.

Tomcat puede utilizar dos herramientas para SSL:

Veamos lo que dice la documentación:

Tomcat can use two different implementations of SSL:

  • the JSSE implementation provided as part of the Java runtime (since 1.4)
  • the APR implementation, which uses the OpenSSL engine by default.

The exact configuration details depend on which implementation is being used. The implementation used by Tomcat is chosen automatically unless it is overriden as described below. If the installation uses APR – i.e. you have installed the Tomcat native library – then it will use the APR SSL implementation, otherwise it will use the Java JSSE implementation.

Al final del artículo están los links a la documentación oficial donde pueden encontrar más detalles.

Requisitos

  1. Tener instalado el Java keytool (está incluido en la JDK, dentro de bin)
  2. Generar un certificado para el servidor con el keytool (lo crearemos en la carpeta confdel Tomcat):
    keytool -genkey -alias tomcat -keyalg RSA -keystore TOMCAT_HOME/conf/tomcat.jks

    Nota: Después de ejecutar el comando hay que llenar los datos que aparecen en pantalla para crear el certificado en el almacén de llaves, el password es importante!!.

Procedimiento

Tomcat 6.0

Editar el archivo server.xml que esta en la carpeta conf del Tomcat, descomentas las siguientes líneas:

 <!-- 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 configuration
         described in the APR documentation -->
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
               maxThreads="150" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />

Ahora editas ese tag con lo siguiente:

<Connector port="8443" 
           protocol="HTTP/1.1" 
           SSLEnabled="true" 
           maxThreads="150" 
           scheme="https"  secure="true"
           clientAuth="false" 
           sslProtocol="TLS" 
           keystoreFile="conf/tomcat.jks"
           keystorePass="MyPASS"/>

El keyStorePass es el password que creamos en el almacen de contraseñas del keytool.

Si al final del procedimiento tienes problemas puedes probar cambiando el protocolo por:

  • protocol="org.apache.coyote.http11.Http11Protocol"
  • protocol="org.apache.coyote.http11.Http11NioProtocol"

Nota: En la documentación puedes encontrar la descripción de cada uno.

Ahora solo hay que iniciar el servidor y entrar por el puerto indicado (8443) através de https y nos debe de aparecer algo como esto:

Nota: si tienes que modificar el puerto ten en cuenta lo siguiente:

If you change the port number here, you should also change the value specified for the redirectPort attribute on the non-SSL connector. This allows Tomcat to automatically redirect users who attempt to access a page with a security constraint specifying that SSL is required, as required by the Servlet Specification.

Después debes aceptar el certificado de forma temporal y posteriormente acceder a la misma página:

Tomcat 5.5

El proceso es el mismo, editas el archivo server.xml con las siguientes opciones:

<!-- 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"
	    keystoreFile="conf/tomcat.jks"
	    keystorePass="MyPASS"/>

Al levantar el servidor debes ver esto:

Tomcat 7.0

Hay que seguir el mismo procedimieto que el tomcat 6:

Enlaces

Saludos

3 comentarios en “Enable SSL (Secure Socket Layer) in Apache Tomcat (5.5, 6 y 7)

  1. Marcos Aguilar dijo:

    Oyeeeeeeeeee que bien, hasta que alguien lo explica muy muy facil, latima que lo necesito para UNIX, tendras algo de eso, pero que buen trabajo sigue asi, Saludos

      • Marcos Aguilar dijo:

        Cierto probado en mi Centos, bueno por lo menos la creacion, lamentablemente me manda error al levantar el servicio, alguna idea porque deja te platico, localmente (WinXP) si todo perfecto y a la primera, pero en el servidor me manda lo siguiente: “Error 102 (net::ERR_CONNECTION_REFUSED): El servidor ha rechazado la conexión.”

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s