Bonjour, Voici la situation Je dispose d'un serveur tang J'ai un serveur "client" sous Ubuntu 24.04 LTS server avec son disque système chiffré en LUSK. J'aimerai que le déchiffrement s'éxécute comme suit : 1. Déchiffrement via le couple Clevis / Tang 2. Au bout de 30s si le serveur Tang n'est pas accessible déchiffrement avec un fichier clé situé sur une clé USB avec un délais de 3 minutes pour la brancher 3. En l'absence de clé usb au bout des 3 minutes, demande de la phrase de passe pendant 3 minutes 4. En cas d'absence de phrase de passe ou au bout de 3 erreurs extinctions du serveur Pour cela 1. J'installe et configure Clevis: sudo apt install clevis clevis-luks clevis-initramfs sudo clevis luks bind -d /dev/sda3 tang '{"url": "http://<adresse ip du serveur>:<port d'écoute de Tang>"}' Je configure l'utilisation de la clé USB: sudo mkdir /boot/key sudo mount UUID=<UUID de la clé> /boot/key/ j'utilise l'UUID de la clé car en cas d'ajout d'un disque de données la lettre de lecteur pourrait changer sudo cryptsetup luksAddKey UUID=<UUID du disque système chiffré LUSK> /boot/key/<fichier clé> sudo nano /usr/local/bin/unlock_luks je créer un script d'ordonnancement du déchiffrement /usr/local/bin/unlock_luks #!/bin/sh
# Ce script doit retourner la clé de déchiffrement sur stdout
USB_UUID="<UUID de la clé usb>"
MOUNT_POINT="/tmp/keyusb"
KEY_FILE="<fichier clé>"
CLEVIS_TIMEOUT=10 # Timeout de 30 secondes pour Tang
USB_TIMEOUT=30 # Timeout de 180 secondes pour la clé USB
# 1. Essayer Clevis/Tang avec timeout
if timeout "$CLEVIS_TIMEOUT" /usr/bin/clevis luks unlock -d "$CRYPTTAB_SOURCE" -n "$CRYPTTAB_NAME" 2>/dev/null; then
# Clevis a réussi à déverrouiller
exit 0
fi
# 2. Essayer la clé USB (attendre jusqu'à 180 secondes)
counter=0
while [ $counter -lt $USB_TIMEOUT ]; do
if [ -e "/dev/disk/by-uuid/$USB_UUID" ]; then
mkdir -p "$MOUNT_POINT" 2>/dev/null
if mount -o ro "/dev/disk/by-uuid/$USB_UUID" "$MOUNT_POINT" 2>/dev/null; then
if [ -f "$MOUNT_POINT/$KEY_FILE" ]; then
# Retourner la clé sur stdout
cat "$MOUNT_POINT/$KEY_FILE"
umount "$MOUNT_POINT" 2>/dev/null
exit 0
fi
umount "$MOUNT_POINT" 2>/dev/null
fi
fi
counter=$((counter + 1))
sleep 1
done
# 3. Demander la passphrase
/lib/cryptsetup/askpass "Enter passphrase for $CRYPTTAB_SOURCE: "
je configure /etc/crypttab et je met à jour initramfs sudo nano /etc/crypttab /etc/crypttab #dm_crypt-0 UUID=<UUID du disque système chiffré LUSK> none LUKS dm_crypt-0 UUID=<UUID du disque système chiffré LUSK> none LUKS,keyscript=/usr/local/bin/unlock_luks,initramfs sudo update-initramfs -u -k all Lorsque je test la phrase de passe est demandée en parallèle de l’exécution de Clevis et de la lecture de la clé USB J'ai fais plusieurs modifications pour essayer d'ordonnancer la phrase de passe à la fin mais cela casse toujours la configuration et empêche le boot Je n'ai du coup pas encore etudié l'extinction automatique après 180 secondes d'attente de la phrase de passe ou 3 erreurs de saisie. Auriez-vous une idée?