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.

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 archivoscert.pem
seguido dechain.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.
