Instructions pour créer une machine d'expérimentation en groupe de openSSL
Il faut :
Créer le script d'installation :
cd ~
nano config.sh
contenu :
#!/usr/bin/env bash
# openssl lab config script
# P. MELOT 04/2025, rev. 01/2026
apt update && apt -y upgrade
apt -y install tree sudo openssl ca-certificates
# Prevenir les fork-bombs
echo "* hard nproc 2048" >> /etc/security/limits.conf
# on désactive wall
chmod a-x /usr/bin/wall
cat << 'EOF' >> /etc/motd
Welcome to the ...
_________ _________.____ .__ ___.
____ ______ ____ ____ / _____// _____/| | | | _____ \_ |__
/ _ \\____ \_/ __ \ / \ \_____ \ \_____ \ | | | | \__ \ | __ \
( <_> ) |_> > ___/| | \/ \/ \| |___ | |__/ __ \| \_\ \
\____/| __/ \___ >___| /_______ /_______ /|_______ \ |____(____ /___ /
|__| \/ \/ \/ \/ \/ \/ \/
EOF
# clear-users : supprime tous les users standard (supprime aussi les home)
cat << 'EOF' > /usr/sbin/clear-users
#!/usr/bin/env bash
for user in $(cat /etc/passwd | cut -d ":" -f 1); do
uid=$(id -u $user)
if [ $uid -ge 1000 ]; then
echo "Suppression de l'utilisateur $user ..."
userdel -rf $user 2> /dev/null && echo "...ok"
fi
done
EOF
# cre-users : crée les utilisateurs listés dans le fichier passé en argument 1, avec le password initial passé en arg 2
cat << 'EOF' > /usr/sbin/cre-users
#!/usr/bin/env bash
PWD=$2
if [[ -z "$PWD" ]]; then
PWD="azerty123"
fi
for user in `cat $1`
do
echo "Création du user : $user - Mot de passe provisoire : $PWD"
useradd -s /bin/bash $user -mU && echo "$user:$PWD" | chpasswd && chage -d 0 $user && echo " : OK"
# setquota -u $user 1G 2G 0 0 /
done
EOF
# on rend executable les scripts
chmod u+x /usr/sbin/cre-users
chmod u+x /usr/sbin/clear-users
# on crée le dossier /var/public
mkdir -p /var/public
chmod 777 /var/public
Exécutez le script :
chmod u+x config.sh
sudo ./config.sh
Creéz un fichier contenant les liste des users (login) :
cat << 'EOF' > users
pierre
paul
jacques
...
EOF
Puis creéz les comptes pour chacun :
sudo cre-users users motdepasse
A ce stade, chaque utilisateur peut se connecter en ssh avec son login et motdepasse ; celui-ci cevra être modifié à la première connexion.
à protéger éventuellement par une phrase de passe :
sudo openssl genrsa -aes256 -out ca_key.pem 4096
sudo openssl req -new -x509 -key ca_key.pem -out ca_cert.pem -days 365
Dans le contexte d'une PKI, ce certificat va devenir la racine de confiance.
Tous les autres certificats seront signés par cette autorité de certification, formant ainsi une chaîne de confiance.
Si on fait confiance à ce certificat racine, on fait implicitement confiance à tous les certificats qu'il a signés.
sudo cp ca_cert.pem /usr/local/share/ca-certificates/ca_locale.crt
sudo update-ca-certificates
Cette commande analyse le contenu du répertoire /usr/local/share/ca-certificates/, ajoute les nouveaux certificats au magasin principal et génère un fichier ca-certificates.crt qui combine tous les certificats de confiance.
Vous devriez voir un message confirmant l'ajout d'un nouveau certificat, par exemple :
1 added, 0 removed; done.
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt ca_cert.pem
L'élève crée sa paire de clé :
openssl genrsa -out eleve1_key.pem 2048
puis génère une demande de signature de certificat (csr)
openssl req -new -key eleve1_key.pem -out eleve1.csr
Le user admin doit récupérer cette demande, par exemple :
sudo cp /home/eleve1/eleve1.csr .
Vous (le user admin) signez la demande avec votre CA ca_locale :
sudo openssl x509 -req -in eleve1.csr -CA /usr/local/share/ca-certificates/ca_locale.crt -CAkey ca_key.pem -out eleve1_cert.pem -days 30
Puis on lui transmet son certificat signé (en lui donnant aussi la propriété) :
sudo chown eleve1:eleve1 eleve1_cert.pem
sudo cp eleve1_cert.pem /home/eleve1/
L'élève vérifie que son certificat est bien reconnu comme fiable :
openssl verify eleve1_cert.pem
Qui doit retourner :
eleve1_cert.pem: OK