Integrar certificados digitales de Caddy en Home Assistant

Caddy nos genera automáticamente los certificados digitales de raíz de nuestro dominio y/o de los subdominios según lo tengamos configurado , crea automáticamente una carpeta por cada uno de los certificados

Home Assistant usa el formato PEM tanto para la parte privada como la publica , esta parte la definimos en la sección http de nuestro configuration.yaml

http:
  ssl_certificate: /config/certificados/certs/xxxxxxxxx.duckdns.org.public.pem
  ssl_key: /config/certificados/private/xxxxxxxxx.duckdns.org.private.pem

Lo primero que necesitamos es transformar el fichero crt y el fichero key a pem publico y privado

Para ello usaremos el comando openssl , de esta forma obtendremos la clave publica y su certificado

openssl x509 -in  antrivas.duckdns.org.crt -out  antrivas.duckdns.org.public.pem  -outform PEM

Y con esta obtendremos la calve privada y el certificado correspondiente

openssl ec -in antrivas.duckdns.org.key -text > antrivas.duckdns.org.private.pem

Con este comando podremos comprobar la validez del certificado creado

cat antrivas.duckdns.org.public.pem | openssl x509 -text -noout

Copiaremos ambos certificados al directorio donde Home Assistant va a buscarlos

#Copiamos el certificado digital
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.public.pem /home/antonio/Containers/homeassistant/certificados/certs/
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.private.pem /home/antonio/Containers/homeassistant/certificados/private/

Después de comprobar reiniciando HA la validez de ambos certificados lo añadiremos a una tarea cron que se ejecuta cada dia a las seis de la mañana para que nuestro HA siempre tenga los certificados digitales bien fresquitos

echo "****************************************************************" >> $RUTA_LOG
echo `date +"%T"`  "REINICIO DEL SISTEMA" >> $RUTA_LOG
echo "****************************************************************" >> $RUTA_LOG
echo `uptime` | sed -e 's/^[ \t]*//'  >> $RUTA_LOG
echo "****************************************************************" >> $RUTA_LOG


#Creamos los certificados
openssl x509 -in  /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.crt -out  /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.public.pem  -outform PEM
openssl ec -in /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.key -text > /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/antrivas.duckdns.org.private.pem

#Copiamos el certificado digital
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.public.pem /home/antonio/Containers/homeassistant/certificados/certs/
sudo cp -f /home/antonio/Containers/caddy/data/caddy/certificates/acme.zerossl.com-v2-dv90/antrivas.duckdns.org/*.private.pem /home/antonio/Containers/homeassistant/certificados/private/

En las propiedades del certificado veremos que cada vez que se auto renueve lo tendremos listo para usar

Y con esto y un bizcocho ……