Let's Encrypt

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche
(Contenu remplacé par « == Présentation == Cette page a pour objet de lister les différentes mises en place de création/demande de renouvellement de certificat SSL de façon automatique av... »)
Balise : Contenu remplacé
 
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 1 : Ligne 1 :
== Installation sur un ESXi ==
+
== Présentation ==
 +
Cette page a pour objet de lister les différentes mises en place de création/demande de renouvellement de certificat SSL de façon automatique avec Let's Encrypt selon les systèmes utilisés.
  
Au regard de la complexité d'installation de cerbot et de ses dépendances sur un ESXi, il a été décidé de s'appuyer sur le package Acme du routeur/pare-feu pfSense pour générer le certificat et sur un script shell pour rapatrier ledit certificat sur l'ESXi.
+
== Liste des pages ==
 
+
{{#subpages:default=''}}
=== Créer les clés SSH ===
 
 
 
ssh-keygen n'étant pas présent sur le serveur ESXi, nous allons lancer la commande suivante sur un autre serveur Linux :
 
 
 
ssh-keygen -t rsa
 
 
 
Cela génère une clé privée ''.ssh/id_rsa'' et une clé publique ''.ssh/id_rsa.pub''.
 
 
 
Editer la clé publique ''.ssh/id_rsa.pub'', modifier le nom d'utilisateur et le nom d'hôte afin que cela corresponde avec l'utilisateur et le nom de l'ESXi.
 
 
 
Sur le serveur Linux, copier les clés SSH précédemment générées et les déposer sur le serveur ESXi dans un dossier .ssh créé à la racine du dossier home de l'utilisateur de l'ESXi.
 
 
 
Sur le serveur ESXi, sécuriser l'accès au dossier .ssh :
 
chmod 700 .ssh
 
chmod 600 .ssh/*
 
 
 
Au niveau du routeur/pare-feu pfSense, mettre en place les règles nécessaires afin de n'ajouter l'autorisation de connexion SSH qu'au serveur ESXi seulement.
 
 
 
Sur le routeur/pare-feu pfSense, se connecter en SSH en tant que root et créer un dossier .ssh à la racine du dossier home :
 
mkdir ~/.ssh
 
 
 
Editer un fichier ~/.ssh/authorized_keys et ajouter le contenu de la clé publique ''id_rsa.pub'' précédemment créée.
 
 
 
Sécuriser l'accès au dossier .ssh du routeur/pare-feu pfSense :
 
chmod 700 .ssh
 
chmod 600 .ssh/*
 
 
 
Depuis le serveur ESXi, faire un test de connexion SSH vers le routeur/pare-feu pfSense, la connexion devrait être fonctionnelle et ne pas demander de mot de passe.
 
 
 
=== Sauvegarde des certificats par défaut ===
 
 
 
Sur le serveur ESXi, sauvegarder la clé privée et le certificat existants :
 
mv /etc/vmware/ssl/rui.crt /etc/vmware/ssl/rui.crt_sav20180618
 
mv /etc/vmware/ssl/rui.key /etc/vmware/ssl/rui.key_sav20180618
 
 
 
=== Automatisation de la récupération du certificat SSL ===
 
 
 
Grâce à l'authentification par clé SSH précédemment réalisée, le script suivant permet la récupération automatique du certificat SSL d'une part, et la mise à jour de ce dernier sur le serveur ESXi si nécessaire d'autre part.
 
 
 
<pre>
 
#!/bin/sh
 
 
 
# Définition des variables
 
LOG_DIR=/var/log/ssl_cert
 
SCRIPT_NAME=$(echo $0|awk -F"/" '{print $NF}'|awk -F"." '{print $1}')
 
LOG_FILE=$LOG_DIR/$SCRIPT_NAME$(date +"_%Y-%d-%m_%H-%M").log
 
TEMP_DIR=/tmp
 
REMOTE_HOST=xxxxxxxx
 
REMOTE_USER=xxxxxxx
 
REMOTE_DIR=xxxxxxxxxxxxxxxxxxxxxxxxxx
 
REMOTE_CERT=xxxxxxxxxxxxxxxxxxxx.cer
 
LOCAL_DIR=/etc/vmware/ssl
 
LOCAL_CERT=rui.crt
 
 
 
# Récupération du certificat
 
scp $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$REMOTE_CERT $TEMP_DIR/ >> $LOG_FILE 2>&1
 
 
 
ERROR_CODE_SCP=$?
 
 
 
if [ $ERROR_CODE_SCP -eq 0 ] # Le SCP s'est bien déroulé
 
then
 
echo $(date "+%F %T ")"Le code erreur scp est "$ERROR_CODE_SCP". Suite du script." >> $LOG_FILE 2>&1
 
# Comparaison des certificats
 
diff $TEMP_DIR/$REMOTE_CERT $LOCAL_DIR/$LOCAL_CERT >> $LOG_FILE 2>&1
 
 
ERROR_CODE_DIFF=$?
 
 
 
if [ $ERROR_CODE_DIFF -eq 0 ] # Le diff ne remonte aucune différence
 
then
 
echo $(date "+%F %T ")"Le code erreur diff est "$ERROR_CODE_DIFF". Le diff ne remonte aucune différence. Arrêt normal du script." >> $LOG_FILE 2>&1
 
exit 0
 
elif [ $ERROR_CODE_DIFF -eq 1 ] # Le diff remonte une différence
 
then
 
echo $(date "+%F %T ")"Le code erreur diff est "$ERROR_CODE_DIFF". Suite du script." >> $LOG_FILE 2>&1
 
# Sauvegarde de l'ancien certificat
 
mv $LOCAL_DIR/$LOCAL_CERT $LOCAL_DIR/$LOCAL_CERT$(date +"_sav%Y%d%m") >> $LOG_FILE 2>&1
 
 
 
ERROR_CODE_MV1=$?
 
 
if [ $ERROR_CODE_MV1 -eq 0 ] # Le mv1 s'est bien déroulé
 
then
 
echo $(date "+%F %T ")"Le code erreur mv1 est "$ERROR_CODE_DIFF". Suite du script." >> $LOG_FILE 2>&1
 
# Mise en place du nouveau certificat
 
mv $TEMP_DIR/$REMOTE_CERT $LOCAL_DIR/$LOCAL_CERT >> $LOG_FILE 2>&1
 
 
ERROR_CODE_MV2=$?
 
 
if [ $ERROR_CODE_MV2 -eq 0 ] # Le mv2 s'est bien déroulé
 
then
 
echo $(date "+%F %T ")"Le code erreur mv2 est "$ERROR_CODE_DIFF". Suite du script." >> $LOG_FILE 2>&1
 
# Relance des services de l'ESXi pour prise en compte du nouveau certificat
 
/bin/services.sh  >> $LOG_FILE 2>&1
 
exit 0
 
else # Le mv2 rencontre une erreur
 
echo $(date "+%F %T ")"Le code erreur mv2 est "$ERROR_CODE_DIFF". Arrêt prématuré du script." >> $LOG_FILE 2>&1
 
exit 1
 
fi
 
else # Le mv1 rencontre une erreur
 
echo $(date "+%F %T ")"Le code erreur mv1 est "$ERROR_CODE_DIFF". Arrêt prématuré du script." >> $LOG_FILE 2>&1
 
exit 1
 
fi
 
else # Le diff rencontre une erreur
 
echo $(date "+%F %T ")"Le code erreur diff est "$ERROR_CODE_DIFF". Arrêt prématuré du script." >> $LOG_FILE 2>&1
 
exit 1
 
fi
 
 
 
else # Le SCP a rencontré une erreur
 
echo $(date "+%F %T ")"Le code erreur scp est "$ERROR_CODE_SCP". Arrêt prématuré du script." >> $LOG_FILE 2>&1
 
exit 1
 
fi
 
 
 
</pre>
 

Version actuelle datée du 6 juin 2019 à 13:12

Présentation

Cette page a pour objet de lister les différentes mises en place de création/demande de renouvellement de certificat SSL de façon automatique avec Let's Encrypt selon les systèmes utilisés.

Liste des pages