Nexus en HTTPS con Let’s Encrypt

En este tutorial vamos a ver los cambios de configuración a realizar para poder ejecutar Nexus en HTTPS usando certificados proporcionados por Let's Encrypt.

Índice de contenidos

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Slimbook Pro 2 13.3″ (Intel Core i7, 32GB RAM)
  • Sistema Operativo: LUbuntu 18.04

2. Introducción

En el momento en el que nuestras herramientas de desarrollo las movemos a la nube, quedamos expuestos a cualquiera que acierte con nuestra URL por lo que se hace imprescindible que todo nuestro tráfico vaya a través del protocolo seguro HTTPS y Nexus no puede ser una excepción; más si cabe cuando lo utilizamos como repositorio privado de Docker que te obliga a que las imágenes sean servidas a través de protocolo seguro.

Nota: Para seguir el tutorial es necesario que ya tengas generados certificados válidos en un dominio real, yo lo voy a hacer con los mios de Let’s Encrypt.

3. Vamos al lío

Lo primero que tenemos que hacer es acceder por SSH al servidor donde esté corriendo Nexus y localizar los siguientes paths:

  • $install-dir: se trata del directorio donde está instalado nexus, típicamente /opt/nexus pero depende de la instalación que se haya hecho.
  • $data-dir: se trata del directorio sonatype-work que suele estar como hermano del anterior.

Hay que tener en cuenta que Nexus se levanta en un servidor Jetty y que lo que vamos a hacer es configurar este servidor para servir HTTPS.

Entonces el primer paso es crear el fichero $install-dir/etc/ssl/keystore.jks que va a contener nuestro certificado. Si contamos con certificados de Let’s Encrypt tendremos que tener los ficheros: fullchain.pem y privkey.pem los cuales vamos a tener que convertir con la herramienta openssl al formato de keystore necesario:

$> openssl pkcs12 -export -out keystore.pkcs12 -in fullchain.pem -inkey privkey.pem

Nota: cuando nos lo pida establemos una contraseña que tendremos que recordar para más adelante.

Ahora importamos el certificado creando el fichero keystore.jks

$> keytool -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 -destkeystore keystore.jks

Nota: establecemos la misma contraseña que en la ejecución anterior.

Con esto ya tenemos creado nuestro fichero $install-dir/etc/ssl/keystore.jks que va a ser el que lea Nexus en su arranque.

Ahora vamos a editar el fichero $data-dir/etc/nexus.properties donde vamos a añadir la línea «application-port-ssl=8443» y vamos a descomentar la línea nexus-args para añadir un nuevo valor «${jetty.etc}/jetty-https.xml» de modo que la línea quedaría de esta forma:

nexus-args=${jetty.etc}/jetty.xml,${jetty.etc}/jetty-http.xml,${jetty.etc}/jetty-https.xml,${jetty.etc}/jetty-requestlog.xml,${jetty.etc}/jetty-http-redirect-to-https.xml

Guardamos este fichero y editamos el fichero «$install-dir/etc/jetty/jetty-https.xml» donde modificamos los tres puntos en los que se establece la palabra «password» por la contraseña que hayamos puesto anteriormente.

Ahora solo tenemos que reniciar Nexus con el comando:

$> sudo systemctl restart nexus

Para depurar cualquier tipo de error en el arranque lo más útil es mirar el log:

$> tail -1000f $data-dir/nexus3/log/nexus.log

Si todo es correcto podrás acceder a Nexus a través de la URL: https://tudominio.org:8443 y ten en cuenta que cualquier referencia al repositorio ahora solo será válida con esta URL, por lo que tendrás que actualizarla donde se esté utilizando.

4. Conclusiones

Como ves no es complicado tener nuestro repositorio para todo sirviendo el contenido a través de protocolo seguro y dándonos un plus de seguridad en nuestras operaciones en la nube.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática, especialidad en Ingeniería del Software.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

30/10/2025

Benjamín Suárez Menéndez

El Complex Problem Solving (CPS) es un proceso estructurado basado en herramientas, técnicas y actitudes que nos facilita la resolución de problemas complejos.

03/10/2025

Miguel García Rodríguez

Descubre cómo el diseño y la psicología del comportamiento utilizan sesgos cognitivos para influir en la toma de decisiones de los usuarios y potenciar la persuasión.

30/09/2025

Iván García Sainz-Aja

En este artículo exploraremos cómo utilizar ZenWave360 para generar un proyecto completo de Spring Boot con Kotlin a partir de un modelo DSL de Lenguaje Ubicuo.