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-ovh email@mondomaine.com www.mondomaine.org

Création avec haple.sh et challenge DNS de Gandi et Ionos​

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.

Tout d'abord, créez le jeton d'API puis creer un fichier :

.gandi.ini

dns_gandi_token=PERSONAL_ACCESS_TOKEN
dns_gandi_sharing_id=SHARINGID

Voici la commande permettant de créer le certificat avec le challenge DNS Gandi :

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

.ionos.ini

dns_ionos_prefix = myapikeyprefix
dns_ionos_secret = verysecureapikeysecret
dns_ionos_endpoint = https://api.hosting.ionos.com

Voici la commande permettant de créer le certificat avec le challenge DNS Ionos :

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

Création avec haple.sh et challenge DNS de Cloudflare​

.cloudflare.ini

dns_cloudflare_api_token = apikey

Voici la commande permettant de créer le certificat avec le challenge DNS Cloudflare :

sudo /usr/local/bin/haple.sh create-cert-dns-cloudflare 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 :