Instructions pour créer une machine d'expérimentation en groupe de openSSL
Il faut :
Toutes les commandes qui suivent sont exécutées par root.
Créer ce script au niveau du home root (/root
) :
nano config.sh
contenu :
#!/usr/bin/env bash
# openssl lab config script
# P. MELOT 04/2025
apt update && apt -y upgrade
apt -y install tree sudo
# 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
./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 :
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 :
openssl genrsa -aes256 -out ca-key.pem 4096
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.
cp ca-cert.pem /usr/local/share/ca-certificates/ca-locale.crt
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 root user doit récupérer cette demande, par exemple :
cp /home/eleve1/eleve1.csr .
Vous (le root user) signez la demande avec votre CA ca-locale
(dans le home root /root
) :
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é) :
chown eleve1:eleve1 eleve1-cert.pem
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