Añade los certificados Let’s Encrypt a Pi-hole 6

Let’s Encrypt es una autoridad de certificación que proporciona certificados TLS gratuitos, lo que facilita que los sitios web habiliten el cifrado HTTPS y crea una internet más segura para todos.

Acceso via HTTP a Pi-hole

No explicaré aquí como instalar los certificados, ya que lo hice en el primer artículo de este blog Instala WordPress en tu raspberry Pi 4 .

Así, que dando por puesto que ya están instalados en nuestro sistema, ya sea a través de WordPress u otro medio, los reutilizaremos para usarlos con Pi-hole

1. Configuración de puertos.

Entra en Pi-hole desde su interfaz gráfica, ve a Settings, All Settings y Webserver and API y busca el apartado webserver.port y cambia al puerto que necesites configurar.

Originalmente los puertos vienen así:

80o,443os,[::]:80o,[::]:443os

El primer bloque (en azul) corresponde a las direcciones IPV4 y el segundo a IPV6.

A continuación te dejo un ejemplo de puerto HTTP y HTTPS tanto para IPV4 como para IPV6.

7070o,7443os,[::]:7070o,[::]:7443os

Nota: no olvides abrir esos mismos puertos en tu router.

2. Localiza tus certificados.

Lo primero sera buscar la ruta al directorio de tu certificado.

sudo ls -l /etc/letsencrypt/live/

La salida nos mostrará la ruta y con ella el directorio que tendrá el mismo nombre que nuestro dominio.

drwxr-xr-x 2 root root 4096 ago  8 19:00 mi.dominio.org
-rw-r--r-- 1 root root  740 feb 24  2024 README

Por lo que, la ruta completa para tus archivos de certificado será:

sudo ls /etc/letsencrypt/live/mi.dominio.org/

Y el resultado de este último comando, listará los siguientes archivos de certificado.

cert.pem  chain.pem  fullchain.pem  privkey.pem  README

3. Copia tus certificados

Como ya sabemos, los certificados de Let’s Encrypt se guardan en el directorio /etc/letsencrypt/live/mi.dominio.org/.

Tan solo necesitaremos dos archivos del directorio, que son:

  • fullchain.pem, que combina los archivos cert.pem seguido de chain.pem, justo en ese orden.
  • privkey.pem, que es la clave privada del certificado (nunca la compartas)

Asegúrate de sustituir mi.dominio.org por el nombre de dominio real.

a. – Copia el certificado fullchain.pem a /tmp/

sudo cp /etc/letsencrypt/live/mi.dominio.org/fullchain.pem /tmp/

b. – Copia la clave privada a /tmp/

sudo cp /etc/letsencrypt/live/mi.dominio.org/privkey.pem /tmp/

4. Combina los certificados.

El servidor web interno de Pi-hole v6 requiere que el certificado y la clave privada estén combinados en un solo archivo PEM llamado tls.pem dentro de la carpeta /etc/pihole/.

Situémonos en el directorio /tmp

cd /tmp/

Si listamos el contenido de /tmp, veremos los 2 certificados copiados anteriormente.

me@linuxete:/tmp
$ ls -l
total 32
-rw-r--r-- 1 root root 2872 sep  8 19:57 fullchain.pem
-rw------- 1 root root  241 sep  8 19:58 privkey.pem

Ahora combinaremos los dos archivos que acabamos de copiar, a un único archivo tls.pem:

sudo bash -c "cat fullchain.pem privkey.pem > /tmp/tls.pem"

Verifica que el archivo tls.pem se ha creado correctamente.

me@linuxete:/tmp
$ ls -l
total 16
-rw-r--r-- 1 root root 2872 sep  8 19:57 fullchain.pem
-rw------- 1 root root  241 sep  8 19:58 privkey.pem
-rw-r--r-- 1 root root 3113 sep  8 20:01 tls.pem

5. Permisos de usuario y grupo.

Echa un vistazo al usuario y grupo tiene archivo tls.pem de Pi-hole

me@linuxete:~
$ ls -l /etc/pihole/tls.pem
-rw------- 1 pihole pihole 3113 sep  8 08:18 /etc/pihole/tls.pem

Tanto el usuario como el grupo pertenecen a pihole. Además los permisos están establecidos en 600

Fíjate, que nuestro nuevo archivo (el que se encuentra en /tmp) tiene como usuario a root y los permisos con 644

Vuelve otra vez a directorio /tmp para cambiar eso.

cd /tmp

sudo chown pihole:pihole tls.pem

sudo chmod 600 tls.pem

Ahora ya lo tenemos preparado.

me@linuxete:/tmp
$ ls -l
total 16
-rw-r--r-- 1 root root 2872 sep  8 19:57 fullchain.pem
-rw------- 1 root root  241 sep  8 19:58 privkey.pem
-rw------- 1 pihole pihole 3113 sep  8 20:01 tls.pem

6. Sustituye al viejo tls

Antes de sustituir tu antiguo archivo tls, considera hacer una copia de seguridad.

sudo mv /etc/pihole/tls.pem /etc/pihole/tls.pem.bak

Tan solo nos queda mover el nuevo tls.pem para sustituir al antiguo.

sudo mv /tmp/tls.pem /etc/pihole/tls.pem

7. Reinicia el servicio Pi-hole

Reinicia el servicio de Pi-hole para que cargue el nuevo certificado.

sudo service pihole-FTL restart

Ahora, cuando accedas a la interfaz de administración de Pi-hole en https://tudominio.com:7443/admin, deberías ver que la conexión es segura y que el certificado es válido.

Acceso vía HTTPS a Pi-hole

Deja un comentario

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

Scroll al inicio