Let's Encrypt

De Wiki de Jordan LE NUFF
Sauter à la navigation Sauter à la recherche
m (Jordan a déplacé la page Let's Encrypt vers Technique/Let's Encrypt sans laisser de redirection)
(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é
 
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