vCenter – Script pour remplacer le certificat SSL et renouveler son emprunt dans le magasin

Dans ce script, j’utiliser ACME.sh pour générer les certificats avec une autre machine et je pose les clés en SSH sur le vCenter.

A vous d’adapter les emplacements en fonction de vos besoins.

Voici le script :

#!/bin/bash

# Il faut en amont de ce script générer les certificats avec ACME.SH
# Puis copier le dossier d'ACME.SH vers /root
# Et appeler le script

ADMIN_VCENTER='administrator@vsphere.local'
PASSWORD_ADMIN_VCENTER='LOGIN ADMIN'
FQDN_VCENTER='VOTRE FQDN'

# Mise à jour du certificat dans le magasin

CERT_FILE_PATH="/root/$FQDN_VCENTER/fullchain.cer"
KEY_FILE_PATH="/root/$FQDN_VCENTER/$FQDN_VCENTER.key"
OLD_CERT_PATH="/root/$FQDN_VCENTER/old_cert.crt"

if ! [ -e $CERT_FILE_PATH ]; then
	exit
fi

if ! [ -e $KEY_FILE_PATH ]; then
	exit
fi

service-control --stop --all
service-control --start vmafdd
service-control --start vmdird
service-control --start vmcad

/usr/lib/vmware-vmafd/bin/vecs-cli entry delete --store MACHINE_SSL_CERT --alias __MACHINE_CERT -y
/usr/lib/vmware-vmafd/bin/vecs-cli entry create --store MACHINE_SSL_CERT --alias __MACHINE_CERT --cert "$CERT_FILE_PATH" --key "$KEY_FILE_PATH"

service-control --start --all

# Mise à jour de l'emprunt du certificat

OLD_KEY=$(/usr/lib/vmidentity/tools/scripts/lstool.py list --url https://localhost/lookupservice/sdk --no-check-cert --ep-type com.vmware.cis.cs.identity.sso 2>/dev/null | grep trust | cut -d: -f2 | sed 's/ //g')
BEGIN="-----BEGIN CERTIFICATE-----"
END="-----END CERTIFICATE-----"
echo $BEGIN > $OLD_CERT_PATH && echo $OLD_KEY >> $OLD_CERT_PATH && echo $END >> $OLD_CERT_PATH

OLD_FINGERPRINT=$(openssl x509 -in $OLD_CERT_PATH -noout -sha1 -fingerprint | cut -d' ' -f2 | cut -d'=' -f2)

cd /usr/lib/vmidentity/tools/scripts/
python ls_update_certs.py --url https://$FQDN_VCENTER/lookupservice/sdk --fingerprint "$OLD_FINGERPRINT" --certfile "$CERT_FILE_PATH" --user "$ADMIN_VCENTER" --password "$PASSWORD_ADMIN_VCENTER"
cd /root/
rm old_cert.crt

Vous pouvez faire une tache cron ou appeler le script en SSH après avoir poussé les certificats généré avec ACME.sh

Vous pouvez aussi utiliser les commandes POST HOOK de ACME.sh pour appeler vos scripts pour pousser et lancer le renouvellement sur votre vCenter.