Gitlab Pages: Renovar certificados LetsEncrypt

2018-09-26

Índice

  1. Instalar certbot
  2. Abrir puertos en el router
  3. Renovar certificado
  4. Creación fichero comprobación en Gitlab
  5. Instalación de los certificados

Ya vimos en este articulo la forma de tener nuestro propio certificado con LetsEncrypt para nuestro dominio con Gitlab Pages, ahora veremos la forma de renovar ese certificado.

El proceso consiste en instalar el certificado en nuestro ordenador y luego copiar el contenido de los certificados en Gitlab Pages

Instalar certbot

Utilizaremos certbot para manejar los certificados, para su instalación en un sistema con linux arch o derivadas

sudo pacman -S certbot

Abrir puertos en el router

Puesto que vamos a utilizar nuestro ordenador para solicitar el certificado, necesitamos abrir los puertos 80 y 443 de nuestro router y redirigirlos a nuestro ordenador, en el ejemplo mi ordenador tiene la dirección 192.168.1.5

img

Una vez instalado certbot y abiertos los puertos, procedemos a solicitar la renovación de nuestro certificado

Renovar certificado

Una vez instalado certbot y abiertos los puertos, procedemos a solicitar la renovación de nuestro certificado, en este articulo utilizaremos como ejemplo el dominio de podcastlinux

sudo certbot certonly -a manual -d podcastlinux.com
[sudo] password for carlos:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator manual, Installer None

Nos solicita una dirección de correo electrónico para las notificaciones, renovaciones, etc, sobre el certificado que estamos solicitando.

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected]

Aceptamos los tórminos del servicio

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

Elegimos si vamos a compartir nuestra dirección de correo con la fundación Electronic Frontier Foundation

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for podcastlinux.com

Nos advierte de que nuestra dirección IP va a quedar registrada y ademas como estamos ejecutando certbot en modo manual en una máquina que no es nuestro servidor, debemos de seleccionar Yes

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NOTE: The IP of this machine will be publicly logged as having requested this
certificate. If you're running certbot in manual mode on a machine that is not
your server, please ensure you're okay with that.

Are you OK with your IP being logged?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Ahora viene lo mas importante, no informa que tenemos que crear un fichero llamado 4N8dnyHlYQgBYJ4RbvAzWxqtT9LbpRfVCBrfjd0UYnk y en su interior debe contener los siguientes datos 4N8dnyHlYQgBYJ4RbvAzWxqtT9LbpRfVCBrfjd0UYnk.10pa088df4VXqxur-DsxtiJEgHLUf0dr2EqzgjRRfzk, cuando terminemos de crear el fichero en la raíz de nuestro repositorio de ficheros en Gitlab pulsaremos la tecla Enter, no antes.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

4N8dnyHlYQgBYJ4RbvAzWxqtT9LbpRfVCBrfjd0UYnk.10pa088df4VXqxur-DsxtiJEgHLUf0dr2EqzgjRRfzk

And make it available on your web server at this URL:

http://podcastlinux.com/.well-known/acme-challenge/4N8dnyHlYQgBYJ4RbvAzWxqtT9LbpRfVCBrfjd0UYnk

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Creación fichero comprobación en Gitlab

Como hemos visto, antes de pulsar la tecla Enter debemos de crear un fichero y añadir los datos que solicitan, en Gitlab añadimos un nuevo fichero

img

Ponemos en su interior los datos, en el ejemplo es un sitio creado en Jekyll por lo que añadimos las etiquetas de redirección

img

Ya tenemos creado el fichero necesario para la comprobación por parte de Letsencrypt de que el dominio para el que solicitamos el certificado es nuestro.

img

Esperamos que termine de crear el sitio nuevamente

img

img

Una vez construido el sitio procedemos a comprobar que el fichero es accesible

curl http://podcastlinux.com/.well-known/acme-challenge/4N8dnyHlYQgBYJ4RbvAzWxqtT9LbpRfVCBrfjd0UYnk

4N8dnyHlYQgBYJ4RbvAzWxqtT9LbpRfVCBrfjd0UYnk.10pa088df4VXqxur-DsxtiJEgHLUf0dr2EqzgjRRfzk%

Vemos que curl devuelve el contenido del fichero, por lo que es accesible y ya podemos pulsar Enter en la ventana de la terminal para terminar con la obtención del certificado

Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/podcastlinux.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/podcastlinux.com/privkey.pem
   Your cert will expire on 2018-12-22. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Los certificados se han creado en /etc/letsencrypt/live/podcastlinux.com

sudo ls /etc/letsencrypt/live/podcastlinux.com
cert.pem  chain.pem  fullchain.pem  privkey.pem  README

Instalación de los certificados

Un vez obtenidos los certificados debemos de añadirlos a nuestra pagina en Gitlab, para ello, nos vamos a Configuracion->Pages_

img

En Domains pulsamos sobre Details del dominio al que vamos modificar el certificado

img

Pulsamos en /Edit #+attrhtml: :width 80% :height 80% :align center img

En Certificate (PEM) añadimos el contenido del fichero /etc/letsencrypt/live/podcastlinux.com/fullchain.pem

sudo cat /etc/letsencrypt/live/podcastlinux.com/fullchain.pem
-----BEGIN CERTIFICATE-----
MIIGCzCCBPOgAwIBAgISA58yNovqpNuWouuE1j3w7OzPMA0GCSqGSIb3DQEBCwUA
....
....
....
sd9jZT1xFhFrAfUN
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
....
....
....
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----

En Key (PEM) añadimos el contenido del fichero /etc/letsencrypt/live/podcastlinux.com/privkey.pem

sudo cat /etc/letsencrypt/live/podcastlinux.com/privkey.pem
[sudo] password for carlos-k:
 -----BEGIN PRIVATE KEY-----
 MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC83NkuuYBwoTfi
 ....
 ....
 ....
 AJS/UPbG5eaxDO22JtLfOAXB
 -----END PRIVATE KEY-----

img

Tras guardar los cambios ya tendremos listo el nuevo certificado para nuestro sitio web.

img

img Espero que te haya gustado, pasa un buen día. 🐧


Ingrese la dirección de su instancia