Documentaci贸n Completa: Automatizaci贸n de Certificados en Home Assistant
馃搶 Prop贸sito
Automatizar la renovaci贸n y gesti贸n de certificados SSL del router ASUS TUF GAMING AX4200 en Home Assistant, incluyendo:
Verificaci贸n de fecha de expiraci贸n
Reinicio de home assistant
馃敡 Configuraci贸n Requerida
1. Entidades Necesarias
yaml
input_datetime:
data_certpem:
name: "Fecha Expiraci贸n Certificado"
has_date: true
has_time: true
icon: mdi:certificate
En integraciones se tuvo que instalar unas integraciones. Una es Advanced SSH & Web Terminal que se puede instalar directamente desde modulos. En hacs SSH esta fue por motivos que no fui capaz de conectarme mediante shell_command por ssh con el router. Aqui despues hay que a帽adir integraci贸n a帽adiendo la conexi贸n por ssh, para despu茅s poder mandar comandos, y tambien a帽adimos aqu铆 la integraci贸n fecha y hora para poder tener en donde comparar la fecha que obtengamos del certificado del router.
2. Shell Commands (configuration.yaml)
yaml
shell_command:
guardar_privkey: /bin/bash /config/scripts/update_key.sh "{{ contenido }}"
guardar_cert: /bin/bash /config/scripts/update_cert.sh "{{ contenid }}"
3. Scripts (/config/scripts/)
update_key.sh:
bash
#!/bin/bash echo -e "$1" > /config/ssl/privkey.pem
update_cert.sh:
bash
#!/bin/bash echo -e "$1" > /config/ssl/fullchain.pem
⚙️ Automatizaci贸n Completa
yaml
alias: Actualizaci贸n Inteligente de Certificados
description: Solo actualiza si el router tiene certificados m谩s recientes
triggers:
- trigger: time_pattern
hours: /1
conditions:
- condition: template
value_template: |-
{% set cert_str = states('input_datetime.data_certpem') %}
{% set cert_dt = strptime(cert_str, '%Y-%m-%d %H:%M:%S') %}
{% set cert_ts = as_timestamp(cert_dt) %}
{% set now_ts = as_timestamp(now()) %}
{{ cert_ts < now_ts }}
actions:
- sequence:
- action: ssh.execute_command
metadata: {}
data:
command: openssl x509 -in /etc/cert.pem -noout -enddate
target:
device_id: tudispositivo
response_variable: clave
enabled: true
- variables:
fecha_raw: "{{ clave.results[0].stdout[0].split('=')[1] }}"
fecha_iso: >-
{{ strptime(fecha_raw, "%b %d %H:%M:%S %Y
%Z").strftime('%Y-%m-%dT%H:%M:%S') }}
enabled: true
- data:
entity_id: input_datetime.data_certpem
datetime: "{{ fecha_iso }}"
action: input_datetime.set_datetime
enabled: true
- action: ssh.execute_command
metadata: {}
data:
command: cat /etc/key.pem
target:
device_id: tudispositivo
response_variable: key
enabled: true
- action: shell_command.guardar_privkey
metadata: {}
data:
contenido: "{{ key.results[0].stdout | join(' ') }}"
enabled: true
- action: ssh.execute_command
metadata: {}
data:
command: cat /etc/cert.pem
target:
device_id: tudispositivo
response_variable: cert
enabled: true
- action: shell_command.guardar_cert
metadata: {}
data:
contenid: |-
{{ cert.results[0].stdout | join('
') }}
enabled: true
- data:
title: Certificados actualizados
message: Los certificados del router ASUS han sido guardados correctamente.
action: persistent_notification.create
enabled: true
- action: homeassistant.restart
data: {}
enabled: true
enabled: true
mode: single馃攳 Flujo de Trabajo
Verificaci贸n Horaria: Comprueba cada hora si el certificado expira
Condici贸n para que se ejecute: Aqu铆 es donde se compara el input_data creado con ya la fecha incluida del certificado con el sensor que hemos a帽adido de fecha y hora (para saber la fecha y hora real) y solo cumplir谩 la condici贸n cuando el input_data haya expirado.
Extracci贸n Segura: Usa OpenSSL para obtener la fecha real de expiraci贸n, y introducimos la nueva fecha en el input_ data creado
Copia : Sobre escribe los ficheros de la carpeta SSL
Notificaci贸n: Notificaci贸n persistente como que se haejecutado el script
Reinicio: reinicia el sistema
⚠️ Requisitos Previos
Integraci贸n SSH: Configurada y funcionando
Permisos:
bash
chmod +x /config/scripts/update_*.sh
chown homeassistant /config/ssl/*
Estructura de Directorios:
text
/config/ ├── scripts/ │ ├── update_key.sh │ └── update_cert.sh └── ssl/ ├── privkey.pem └── fullchain.pem
馃搮 Programaci贸n Recomendada
Frecuencia |
Uso T铆pico |
Patr贸n |
|---|---|---|
Cada 1 hora |
Entornos cr铆ticos |
|
Cada 6 horas |
Balanceado |
|
Cada 24 horas |
Bajo riesgo |
|
馃洜 Soluci贸n de Problemas
Error en SSH:
bash
journalctl -u homeassistant | grep "SSH"
Verificar Certificados:
bash
openssl x509 -in /config/ssl/fullchain.pem -noout -text
Logs de Automatizaci贸n:
bash
grep "Gesti贸n Autom谩tica" /config/home-assistant.log
馃攧 Actualizaciones Futuras
Notificaciones Push: A帽adir notificaciones m贸viles
Backup Autom谩tico: Copia de seguridad de certificados antiguos
Integraci贸n con Let's Encrypt: Renovaci贸n autom谩tica completa
Esta documentaci贸n cubre todos los aspectos de tu automatizaci贸n de certificados. Gu谩rdala como referencia en tus archivos de configuraci贸n.
No hay comentarios:
Publicar un comentario