HowTo: Habilitar un puerto seguro en un servidor Apache Tomcat.

Para Habilitar el puerto seguro (https) en tomcat se necesitan 2 cosas; crear un certificado y modificar el archivo de configuración del tomcat.

Crear certificado.

Para generar las llaves necesitamos usar la herramienta “keytool” que se encuentra dentro del directorio en donde esta instalado java y ahí encontraremos la herramienta keytool en la ruta “/java/bin/keytool”.

  1. Primero necesitamos generar una llave y un keystore, para ello usamos el comando:

      keytool -keystore myks.ks -genkeypair – alias mycert
     

    Este comando generara una llave llamada “mycert” y las almacenara en un keystore (almacén) llamado “myks.ks”, sí el almacén no existe lo generara.

  2. En este punto nos debe pedir la contraseña para el almacén.

      Escriba la contraseña del almacén de claves:
     
  3. Despues nos pide los datos para la llave que se generara:

      ¿Cuáles son su nombre y su apellido?
        X1
      ¿Cuál es el nombre de su unidad de organización?
        X2
      ¿Cuál es el nombre de su organización?
        X3
      ¿Cuál es el nombre de su ciudad o localidad?
        X4
      ¿Cuál es el nombre de su estado o provincia?
        X5
      ¿Cuál es el código de país de dos letras de la unidad?
        MX
     
  4. Despues de proporcionar estos datos nos pregunta si la informacion es correcta, a loque tenemos que responder si o no (yes o no en el caso de que este en ingles).

      ¿Es correcto CN=X1, OU=X2, O=X3, L=X4, ST=X5, C=MX?
     
  5. De ser correcta lnos pide una clave para la llave que acabamos de generar, puede ser lamisma del keystore (recomendable) o puede ser otra (tomcat requerirá mayor configuración).

      Escriba la contraseña para la clave (INTRO si es la misma contraseña que la del almacén de claves):
     
  6. Despues de Proporcionar esta clave se generara la llave y quedara almacenada, para desplegarla podemos usar este comando:

      keytool -keystore myks.ks -list
     
  7. Despues de proporcionar la clave que asignamos para el almacén nos mostrara la información.

      Escriba la contraseña del almacén de claves:

      Tipo de almacén de claves: JKS
      Proveedor de almacén de claves: SUN

      Su almacén de claves contiene entrada 1

      mycert, 3/09/2008, PrivateKeyEntry,
      Huella digital de certificado (MD5): CB:31:21:87:25:B4:38:5B:E1:97:C1:BC:28:D0:85:E0  
     

  8. En este punto ya podemos copiar el archivo myks.ks a la carpeta del tomcat.

Configurar Tomcat.

Una vez que tenemos el keystore en el directorio del tomcat (/tomcat/myks.ks) hay que modificar el archivo server.xml que se encuentra en “/tomcat/conf/server.xml” de la siguiente forma.
Buscar la parte “<Connector port=”8443″ ” y sí esta comentada la descomentamos y depues la editamos para que quede de la siguiente forma:


  <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 = "123123"
     keystoreFile = "myks.ks"
  />  
 

Sí el password de la llave es diferente al del almacén de llaves tenemos que agregar esta propiedad a la configuración anterior:


  keypass="pwd de la llave"
 

Sí el almacén de llaves contiene más de una llave y queremos especificar una en especifico usamos el alias de la llave y agregamos esta propiedad a la configuración del puerto:


  keyAlias="alias de la llave"
 

En este ejemplo tenemos un keystore llamado myks.ks en el directorio raiz del tomcat (/tomcat/myks.ks) y el password para el keystore es 123123; El puerto que ah quedado configurado para que podamos accesar al servidor por un canal seguro es el 8443, los demas valores son valores estandar y deben de quedar igual que como el ejemplo.

Si queremos restringir el servidor para que solos sea accesible por medio de este puerto, buscamos la sección “<Connector port=”8080″ ” y la dejamos comentada.


  <!-- <Connector port="8080" maxHttpHeaderSize="8192"
     maxThreads="150" minSpareThreads="25"
     maxSpareThreads="75"
     enableLookups="false" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true" /> -->  
 

Con esto ya tenemos configurado el apache tomcat para que funcione con puerto seguro, si el servidor esta corriendo hay que reiniciarlo para que aplique las nuevas configuraciones.

Saludos!

8 responses to this post.

  1. Interesante Articulo. Muestra una forma sencilla de hacer las
    cosas y sin como perderse, congratulations !!!

    Responder

  2. hola, seguí tus pasos pero no abre la página principal de tomcat por el puerto 8443 pero si por el puerto 8080, tomcat 7 windows 7, Gracias!

    Responder

    • Posted by cool2k on octubre 18, 2012 at 12:40 am

      Hola, disculpa si lo que te pregunto es muy simple pero algunas veces los detalles simples se nos van así que…. ¿En la url usaste https junto con el puerto 8443? adicional a esto.. las instrucciones son para tomcat 5, podrian no aplicar para tomcat 7, lo reviso y te comento.

      Saludos !!

      Responder

      • Posted by cool2k on octubre 18, 2012 at 2:12 am

        Que tal amigo, ya revise y si funciona tambien para tomcat 7 en windows 7. Si aun tienes problemas seria bueno que postearas la parte de configuración del conector 8443 y el mensaje de error que te sale al levantar el tomcat.

        Saludos !!

  3. Hola, por favor alquien podria ayudarme a ver en donde esta el error estoy intentando configurar el https en el tomcat 7.0.32, en windows 8 de 64 bits, con localhost:8080 funciona perfectamente, pero con https://localhost:8443 me sale el siguiente mensaje,

    Error de conexión SSL
    No es posible establecer una conexión segura con el servidor. Es posible que exista un problema con el servidor o que necesites un certificado de autenticación de cliente.
    Error 107 (net::ERR_SSL_PROTOCOL_ERROR): Error de protocolo SSL

    En la parte del KEYSTOREFILE he usado “conf/tomcat.jks” , “D:/conf/tomcat.jks”, o el path completo, ya no se en donde mas cambiarle, si alguien pudiera darme una mano se los agradeceré infinitamente.🙂

    Responder

  4. Posted by GPL3 on septiembre 12, 2013 at 3:14 pm

    Felicidades muy practico el ejemplo. Tengo una pregunta, se podra llevar ese archivo myks.ks a otro PC, para configurar el tomcat?. Gracias por el apoyo…

    Responder

    • Posted by cool2k on septiembre 28, 2013 at 1:53 pm

      Q tal GPL3, en efecto, ese archivo se puede llevar a otro pc siempre que configures el password y ruta correcta todo debe funcionar, Saludos !!!

      Responder

  5. A mi no me funcionó, seguí los pasos del siguiente tutorial y tuve éxito.


    Espero que a alguien le sean de utilidad.

    Lo único que veo diferente es que al Connector le agregan:

    protocol=”org.apache.coyote.http11.Http11NioProtocol”

    Responder

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

A %d blogueros les gusta esto: