ESXi
Sommaire
Présentation
Cette page a pour objet de décrire comment mettre en place la création/demande de renouvellement de certificat SSL de façon automatique avec Let's Encrypt sur un ESXi.
Méthode simple
Au regard de la complexité d'installation de cerbot et de ses dépendances sur un ESXi, il est plus simple de s'appuyer sur le package Acme du routeur/pare-feu pfSense pour générer le certificat et sur un script shell pour déposer ledit certificat sur l'ESXi.
Créer les clés SSH
Se connecter en SSH avec l'utilisateur admin se sur le routeur/pare-feu pfSense (en SSH, sur pfSense cela l'utilisateur admin se transforme en root à la connexion) et lancer la commande suivante :
ssh-keygen -t rsa
Cela génère une clé privée .ssh/id_rsa et une clé publique .ssh/id_rsa.pub.
Copier le contenu de la clé publique SSH précédemment générée et le coller dans le fichier /etc/ssh/keys-root/authorized_keys
(le créer s'il n'existe pas) sur le serveur ESXi.
Depuis le routeur/pare-feu pfSense, faire un test de connexion SSH vers le serveur ESXi, 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.
#!/usr/bin/env sh
DATE=`date +"%Y-%m-%d"`
LOGFILE=/var/log/esx_cert_renewal/esx_cert_renewal_$DATE.log
scp sysesx.jordan-lenuff.com:/etc/vmware/ssl/rui.crt /cf/conf/acme/rui.crt >> $LOGFILE
diff /cf/conf/acme/rui.crt /cf/conf/acme/sysesx.fullchain >> $LOGFILE
if [ "$?" == 0 ]
then
echo "$DATE : Certificat pas à renouveler" >> $LOGFILE
exit
elif [ "$?" == 1 ]
then
echo "$DATE : Certificat à renouveler" >> $LOGFILE
scp /cf/conf/acme/sysesx.fullchain sysesx.jordan-lenuff.com:/etc/vmware/ssl/rui.crt >> $LOGFILE
ssh sysesx.jordan-lenuff.com "/etc/init.d/rhttpproxy restart" >> $LOGFILE
else
echo "$DATE : Erreur sur le diff. Vérifier la présence des fichiers." >> $LOGFILE
fi