Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04 | Ubuntu 18.08

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04 | Ubuntu 18.08

 

Jenkins es una herramienta de automatización de herramientas de código abierto para configurar todo el proceso de entrega de software: entrega continua. Esto permite a los desarrolladores administrar y controlar los procesos de entrega de software a lo largo de todo el ciclo de vida, por ejemplo, para construir, probar e implementar su software de manera confiable.

Jenkins tiene una comunidad activa, vibrante y extensible. Está escrito en Java. Generalmente, Jenkins se ejecuta como una aplicación de servlet Java incorporada independiente. También es posible ejecutar en contenedores de servlets Java como Apache Tomcat o GlassFish.

En este tutorial, aprendemos cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04 .

Prerrequisitos

  • Un servidor Ubuntu 20.04
  • Un usuario con sudo proviledges
  • Mínimo de 1 GB de RAM
  • Oracle JDK 11 o superior instalado.

Paso 1: Instale Jenkins en Ubuntu

El paquete Jenkins disponible en el repositorio predeterminado de Ubuntu probablemente esté detrás de la última versión. Se recomienda instalar Jenkin desde el paquete de mantenimiento proyectado que está disponible en el repositorio oficial.

Primero agregaremos la clave del repositorio al sistema.

$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

Al escribir esta guía, el procedimiento instalará la versión 2.303.3de Jenkins

A continuación, agreguemos el repositorio de paquetes al sources.listarchivo:

$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Deberíamos actualizar la caché del repositorio

$ sudo apt update

Ahora puedes instalar Jenkins:

$ sudo apt install jenkins

Entonces inicia el servicio

$ sudo systemctl start jenkins

Configuremos el servicio para que se inicie automáticamente con el servidor.

$ sudo systemctl enable jenkins

Puedes comprobar el estado del servicio

$ sudo systemctl status jenkins

Puede verificar la versión mirando el archivo /var/lib/jenkins/config.xml

$ cat /var/lib/jenkins/config.xml
<?xml version='1.1' encoding='UTF-8'?>  <hudson>    <disabledAdministrativeMonitors/>    <version>2.303.3</version> ... ... </hudson>

Paso 2: configurar Nginx con certificado SSL

Ahora que usaremos Nginx para proxy la comunicación, primero necesitaremos instalarlo

$ sudo apt install nginx

Ahora necesita copiar el certificado en la carpeta para usarlo. Consideraremos que ya tienes tu certificado SSL.

Copiaremos el certificado

$ sudo cp jenkins.domain.com.crt /etc/nginx/certs/jenkins.domain.com.crt

Luego copia las claves

$ sudo cp jenkins.domain.com.key /etc/nginx/certs/jenkins.domain.com.key

Para evitar cualquier conflicto con la configuración predeterminada de Nginx, eliminaremos la configuración predeterminada del sites-enableddirectorio

sudo rm /etc/nginx/sites-enabled/default

Ahora creemos el archivo de configuración de Jenkins. Jenkins normalmente usa el puerto 8080 para ejecutarse, pero como estamos usando Nginx, escuchará en los puertos 80 y 443, luego, con la información del nombre de dominio, enviará la comunicación internamente en el puerto 8080 para Jenkins.

La configuración que estableceremos forzará automáticamente todas las solicitudes HTTP a HTTPS

$ sudo vim /etc/nginx/sites-available/jenkins.conf
upstream jenkins.domain.com {
       server SERVER_IP:8080;
}
server {
        server_name jenkins.domain.com;
        listen 80 ;
        access_log /var/log/nginx/jenkins.log;
        return 301 https://$host$request_uri;
}
server {
        server_name jenkins.domain.com;
        listen 443 ssl http2 ;
        access_log /var/log/nginx/jenkins.log;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 5m;
        ssl_session_cache shared:SSL:50m;
        ssl_session_tickets off;
        ssl_certificate /etc/nginx/certs/jenkins.domain.com.crt;
        ssl_certificate_key /etc/nginx/certs/jenkins.domain.com.key;
        add_header Strict-Transport-Security "max-age=31536000";
        location / {
                proxy_pass http://jenkins.domain.com;
        }
}

Además de la configuración de Jenkins Nginx, hemos agregado algunos de los derivados de nginx necesarios. Puede utilizar y optimizar de acuerdo con los requisitos de su servidor web.

Ahora cree un símbolo del archivo de configuración para habilitarlo

$ sudo ln -s /etc/nginx/sites-available/jenkins.conf /etc/nginx/sites-enabled/jenkins.conf

Ahora inicie el servicio Nginx

$ sudo systemctl start nginx

Luego habilítalo en el inicio

$ sudo systemctl enable nginx

Ahora puedes probar tu configuración de Nginx

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Ahora reinicie el servicio Nginx para tener en cuenta la configuración

$ sudo systemctl restart nginx

Ahora abra los puertos 80 y 443 en el firewall:

$ sudo ufw allow 80,443/tcp

Además, asegúrese de abrir el puerto ssh antes de habilitar UFW, de lo contrario, podría perder su conexión ssh si algo sale mal

$ sudo ufw allow 'OpenSSH'

Ahora habilite UFW si aún no lo ha hecho

$ sudo ufw enable

Paso 3: acceda y configure Jenkins

Ahora abra su navegador con la URL http://jenkins.domain.com y luego verá la página de Jenkins pidiéndole una contraseña

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04

Para tener la contraseña, debe mostrar el contenido del archivo que se indica

$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
88ba484d8cff4150a90683a07c89ea7c

Luego pegue la contraseña y continúe con la página siguiente. Ahora tendrá la página que le pedirá que instale los complementos predeterminados o que seleccione los que desea instalar. En nuestro caso, dejaremos los predeterminados.

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04

Entonces verá el proceso de instalación

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04

Ahora necesitas crear el usuario administrador.

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04

Ahora valide la URL de Jenkins.

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04

Ahora puede comenzar a usar su Jenkins

Cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04

Conclusión

En este tutorial, aprendimos cómo configurar Jenkins con SSL detrás de Nginx en Ubuntu 20.04. Puede comenzar a configurar los trabajos y las canalizaciones de su proceso de CI / CD.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.