Aller au contenu principal

Certificat SSL

Présentation

Documentation pour la mise en place de certificat SSL pour votre serveur disposant de Haproxy, si vous n'avez pas de reverse proxy il faut passer par la doc https://doc.kokiris.com/Apache#lets-encrypt

Haproxy est en charge de

  • la terminaison SSL ;
  • du HTTP/2 ;
  • de la sécurité des connexions ;
  • du routage évolué.
RôleRépartiteur de charge
Gestion des certificats Let’s Encrypt ou custom sur architecture MultiUne sonde vérifie que le service répond ainsi que les backends
Privilège super-utilisateurreload/restart via synchroGS

Certificat payant

Les certificats SSL doivent être déposés dans le dossier /home/admin{custcode}/ssl/hap/ sous la forme d’un fichier conteneur certificat.pem. Attention le fichier {certificat}.pem doit être la concaténation du certificat de votre domaine, du certificat intermédiaire et de la clef privée.

Gratuit avec Let’s encrypt

Avant execution du script ci-dessous, il est impératif de vérifier que le domaine pointe bien sur l’adresse ip serveur ou bien celle du loadbalancer.

Règles

Limitation

Rechercher

Création avec haple.sh

!!! Attention !!! par robustesse, choisissez de multiplier les certificats plutôt que d’ajouter pleins de domaines à un seul et unique certificat, car en cas d’anomalie de renouvellement sur un des domaines, le certificat entier ne serait pas renouvelé.

Exemple de création d’un certificat avec le script /usr/local/bin/haple.sh par l’utilisateur admin :

sudo /usr/local/bin/haple.sh create email@mondomaine.com www.mondomaine.org

Création avec haple.sh et challenge DNS d'OVH

attention

Si votre version du script haple.sh ne propose pas l'option create-cert-dns, contactez le support à l'adresse support@kokiris.com. Nous mettrons alors le script à jour et installerons les modules nécessaires.

Avant de passer à la génération du certificat Let's Encrypt avec le challenge DNS d'OVH, il est nécessaire de respecter certains prérequis.

Tout d'abord, créez le jeton d'API OVH via ce lien : https://www.ovh.com/auth/api/createToken et renseignez les informations suivantes :

Une fois les informations de connexion de l'API créées, les rajouter dans /home/admin{{ custcode }}/ssl/.ovh.ini :

dns_ovh_endpoint = ovh-eu
dns_ovh_application_key = xxxxxxxxxxxx
dns_ovh_application_secret = xxxxxxxxxxxx
dns_ovh_consumer_key = xxxxxxxxxxxx

Voici la commande permettant de créer le certificat avec le challenge DNS d'OVH :

sudo /usr/local/bin/haple.sh create-cert-dns email@mondomaine.com www.mondomaine.org

Déploiement de certificats classiques avec haple.sh

Dans l'exemple ci-dessous, la commande utilise les 3 fichiers nécessaires pour le déploiement d'un certificat classique.

Les permissions sur les fichiers doivent être restreintes, par exemple chmod 600 *.key *.crt.

sudo /usr/local/bin/haple.sh loadcertificate mondomaine.org /home/ab123/ssl/mondomaine.org.key /home/ab123/ssl/mondomaine.org.crt /home/ab123/ssl/mondomaine.org-intermmediate.crt

Tester sans limites la création de certificat avec haple.sh

Il existe un nombre maximum d'essaie en cas d'erreur pour la génération de certificat avec Let's Encrypt, le nombre d'essaie se limite à 5 avant d'être banni 1h une première fois ainsi que d'autres limitations

Pour tester la validité de son domaine sans avoir à risquer de se faire bannir, il est possible d'utiliser l'argument test suivi du nom de domaine :

sudo /usr/local/bin/haple.sh test mondomaine.com

Renouvellement avec haple.sh

Vous n’aurez jamais besoin de lancer le renouvellement mais voici la commande

sudo /usr/local/bin/haple.sh renew

Planifier le renouvellement avec cron avec haple.sh

Vous devez ajouter cette commande dans votre crontab pour que le renouvellement se fasse automatiquement.

Exemple

0 2 * * 1,5 sudo /usr/local/bin/haple.sh renew > /dev/null

Dans l’exemple ci-dessus, à deux heures du matin, chaque semaine, les lundi et vendredi, une tâche de renouvellement sera lancée.

Suppression manuelle de certificat classique ou let's encrypt

sudo certbot --config-dir=ssl/ delete --cert-name toto.com

puis synchronisation avec le slave

sudo synchroGS -r haproxy

Vidéo démo

Voici une démonstration mettant en avant l'usage du script haple.sh :