Configuración de HTTPS en Servidores Locales con Certificados Autogenerados

Los navegadores modernos como Chrome exigen conexiones seguras (HTTPS) para acceder a funcionalidades sensibles como la cámara web, el micrófono o la geolocalización. Para entornos de desarrollo y pruebas locales, donde no se dispone de un dominio ni de un certificado SSL comercial, es necesario generar un certificado autofirmado.

Generación del Certificado SSL

Utilizaremos la herramienta keytool, incluida en el JDK, para crear el certificado.

1. Creación del Keystore

Ejecuta el siguiente comando en tu terminal para generar un keystore. Este archivo contendrá tu certificado privado y público.

keytool -genkey -alias devserver -keyalg RSA -keystore devserver.jks -validity 36500

  • -alias devserver: Un nombre identificador para la clave dentro del keystore.
  • -keystore devserver.jks: El nombre del archivo donde se guardará el keystore.
  • -validity 36500: Define la validez del certificado en días (equivalente a 100 años).

2. Establecer Contraseñas y Datos del Certificado

Se te solicitará ingresar una contraseña para el keystore (ej. mypassword). Luego, deberás proporcionar información como:

  • Nombre y Apellidos: Es crucial que introduzcas aquí el nombre de host o la dirección IP con la que accederás al servidor local (ej. localhost o 192.168.1.100).
  • Otros datos organizacionales (Organización, Unidad, Ciudad, Estado, País) pueden ser completados o dejados en blanco.

Confirma los datos introducidos. Finalmente, se te pedirá una contraseña para la clave privada (puedes usar la misma que la del keystore).

3. Conversión a formato PKCS12 (Opcional pero Recomendado)

keytool podría emitir una advertencia sugiriendo la conversión a un formato más estándar como PKCS12. Puedes hacerlo con:

keytool -importkeystore -srckeystore devserver.jks -destkeystore devserver.p12 -deststoretype PKCS12

Introduce las contraseñas correspondientes cuando se te soliciten.

Configuración del Servidor Web (Ejemplo con Tomcat)

Ajusta la configuración de tu servidor para que utilice el certificado generado.

1. Modificar el archivo de configuración del conector

Localiza y edita el archivo de configuración de tu servidor (por ejemplo, server.xml en Tomcat). Descomenta o añade un conector SSL, conifgurándolo de la siguiente manera:

<!-- Define un conector para HTTPS -->
<Connector port="8443"
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150"
           SSLEnabled="true"
           scheme="https"
           secure="true"
           clientAuth="false"
           sslProtocol="TLS"
           keystoreFile="ruta/a/tu/devserver.jks"
           keystorePass="mypassword" />

<!-- Configuración del conector AJP, redirigiendo a HTTPS -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

  • port="8443": Puerto para HTTPS. Puedes elegir otro si el 443 está ocupado.
  • keystoreFile: Ruta completa al archivo .jks o .p12 generado.
  • keystorePass: La contraseña del keystore.
  • redirectPort="8443": Asegura que las solicitudes HTTP redirijan a HTTPS.

2. Habilitar Seguridad de Transporte (Opcional)

Para forzar el uso de HTTPS en ciertas partes de tu aplicación, puedes configurar restricciones de seguridad en el archivo web.xml de tu aplicaicón web:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Protegido por SSL</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

Tras reiniciar el servidor, tu aplicación debería ser accesible vía HTTPS.

Aceptación Manual del Certificado en el Navegador

Al intentar acceder a tu sitio vía HTTPS en el navegador, probablemente aparecerá una advertencia de seguridad. Deberás hacer clic en "Avanzado" y luego en "Continuar a [tu dirección]" para confiar en el certificado.

Instalación del Certificado para Evitar Advertnecias Repetidas

Para evitar tener que aceptar el certificado manualmente cada vez:

  1. Accede a tu sitio HTTPS y haz clic en el icono del candado o la advertencia en la barra de direcciones.
  2. Busca la opción para ver o descargar los detalles del certificado.
  3. Guarda el certificado en tu sistema.
  4. Instala el certificado haciendo doble clic en él y seleccionando la opción para colocarlo en el almacén de "Entidades de certificación raíz de confianza".

Reinicia tu navegador para que los cambios surtan efecto.

Etiquetas: java keytool SSL HTTPS tomcat

Publicado el 7-8 19:27