🔐 Script: vault-init
🇪🇸 Descripción
El script vault-init inicializa el sistema de cifrado de ShFlow, generando una clave simétrica segura para proteger los secretos almacenados en core/vault. También permite rotar la clave existente, verificar el estado del vault y configurar cifrado asimétrico mediante claves públicas exportadas con GPG.
Este script se encuentra en core/utils/vault-init.sh y se accede mediante el alias vault-init.
🧩 Acciones disponibles
| Opción | Descripción |
|---|---|
| (sin argumentos) | Genera una nueva clave simétrica si no existe |
--rotate |
Rota la clave actual y re-cifra todos los secretos |
--status |
Muestra el estado actual del vault y claves |
--asymmetric |
Verifica la existencia de una clave pública exportada para cifrado asimétrico |
▶️ Ejemplos de uso
vault-init # Genera clave simétrica si no existe
vault-init --status # Muestra estado del vault
vault-init --rotate # Rota clave y re-cifra secretos
vault-init --asymmetric # Verifica clave pública exportada📁 Archivos utilizados
| Ruta | Descripción |
|---|---|
core/vault/ |
Carpeta donde se almacenan los secretos cifrados |
~/.shflow.key |
Clave simétrica generada por defecto |
~/.shflow.pub |
Clave pública exportada para cifrado asimétrico |
🧠 Trazas esperadas
🔐 Generando nueva clave simétrica...
✅ Clave creada en /home/user/.shflow.key
🔄 Rotando clave y re-cifrando secretos...
🔁 Re-cifrando 'API_TOKEN'...
✅ Rotación completada. Clave antigua guardada en /home/user/.shflow.key.old
📊 Estado del Vault
-------------------
🔐 Clave simétrica: ✅ presente
🔐 Clave pública: ❌ ausente
📁 Ruta del vault: core/vault
📦 Secretos: 3
🕒 Última modificación: 2025-09-19 00:44:12⚠️ Advertencias
- La rotación de clave sobrescribe los secretos cifrados. Se recomienda hacer backup antes.
- El cifrado asimétrico requiere exportar previamente la clave pública con:
gpg --export -a 'usuario@dominio' > ~/.shflow.pub - La clave simétrica debe mantenerse privada y segura. No compartir ni versionar.
📜 Changelog
Consulta el historial de cambios en changelog/vault-init.md