Gitlab Pages: Renovar certificados LetsEncrypt
2018-09-26
Índice
- Instalar certbot
- Abrir puertos en el router
- Renovar certificado
- Creación fichero comprobación en Gitlab
- 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
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
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
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.
Esperamos que termine de crear el sitio nuevamente
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_
En Domains pulsamos sobre Details del dominio al que vamos modificar el certificado
Pulsamos en /Edit #+attrhtml: :width 80% :height 80% :align center
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-----
Tras guardar los cambios ya tendremos listo el nuevo certificado para nuestro sitio web.
Espero que te haya gustado, pasa un buen día. 🐧