GitLab SSL logo

Partimos de la base que tenemos un servidor GitLab instalado y corriendo tal como vimos en este post: http://blog.malditopc.com/nuestro-propio-servidor-git-con-gitlab. Nuestro servidor de repositorios es funcional, pero por supuesto sería más recomendable que toda la información que intercambiamos con el mismo viajase de forma segura, para lo cual obligaremos a que nuestro servidor GitLab trabaje bajo https en lugar de bajo http.

Por defecto GitLab espera que nuestros archivos de certificado (claves publica y privada) se encuentren en el directorio /etc/gitlab/ssl/ bajo los nombres: nuestro-fqdn.key y nuestro-fqdn.crt. Así que creamos ese directorio:

mkdir -p /etc/gitlab/ssl

Ahora empleamos OpenSSL para generar nuestro propio certificado autofirmado:

openssl req -x509 -nodes -days 1825 -newkey rsa:2048 -keyout /etc/gitlab/ssl/gitlab.malditopc.com.key -out /etc/gitlab/ssl/gitlab.malditopc.com.crt

Con este comando estamos indicando:

  • -x509: El certificado estará autofirmado.
  • -nodes: La clave no se genera encriptada. El problema de generar una clave encriptada es que posteriormente nos pedirá la contraseña (passphrase) usada para encriptar la clave al reiniciar el servidor o el servicio, lo cual puede ser un problema. Otra opción sería no usar este parámetro y cuando nos pregunte por la passphrase dejarla en blanco. Claramente es de vital importancia que nadie tenga acceso a este archivo al no estar la clave privada encriptada.
  • -days 1825: El certificado tendrá una validez de 5 años.
  • -newkey rsa:2048: Indicamos que tanto la solicitud de certificado como la clave privada se generarán al mismo tiempo y se empleara el algoritmo RSA con una longitud de clave de 2048 bits.
  • -keyout fqdn.key: Archivo que contendrá la clave privada.
  • -out fqdn.cert: Archivo que contendrá el certificado (clave publica).

Al ejecutar este comando se nos realizarán una serie de preguntas:

  1. Country Name (2 letter code) –> Código de país en formato ISO de dos letras (ES para España).
  2. State or Province Name (full name) [Some-State] –> Estado o provincia.
  3. Locality Name (eg, city) []: –> Localidad o ciudad.
  4. Organization Name (eg, company) [Internet Widgits Pty Ltd]: –> Nombre de la organización.
  5. Organizational Unit Name (eg, section) [] –> Nombre del departamento dentro de la organización
  6. Common Name (eg, YOUR name) []: –> El FQDN. Muy importante que este valor sea correcto.
  7. Email Address: –> Dirección de correo de contacto.

Adecuamos los permisos:

chmod -R 600 /etc/gitlab/ssl/
chmod 700 /etc/gitlab/ssl/

Después debemos editar el archivo /etc/gitlab/gitlab.rb en el cual lo primero que modificaremos es la directiva  external_url que indica la URL de GitLab modificando el http por https y que se encuentra al principio del fichero gitlab.rb:

external_url 'https://gitlab.malditopc.com'

Ahora modificaremos algunas de las opciones presentes en la sección GitLab Nginx.  Al modificar la URL externa, el servidor nginx dejara de servir las peticiones http, así que vamos a obligar a que estas sean redirigidas a https, para lo cual descomentamos la directiva nginx[‘redirect_http_to_https’]  estableciendo su valor a true.

nginx['redirect_http_to_https'] = true

Si observamos en esta misma sección tenemos varias directivas que podríamos modificar para adecuar el entorno a nuestro gusto. Por ejemplo, si queremos almacenar nuestros certificados en otra ruta y/o otros nombres, bastaría con descomentar y modificar las directivas nginx[‘ssl_certificate’] y nginx[‘ssl_certificate_key’]. Pero a nosotros nos vale con los valores por defecto.

Por último tan solo queda ejecutar el comando de reconfiguración de GitLab para que se apliquen las modificaciones indicadas en /etc/gitlab/gitlab.rb a nuestro entorno:

gitlab-ctl reconfigure

GitLab reconfigure

Y eso es todo, a partir de este momento GitLab funcionara de forma segura bajo https.

Deja un comentario

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