Sélectionner une page

AlternC, la suite logicielle de gestion de serveur qu’Octopuce aide à maintenir et utilise au quotidien, dispose depuis quelques temps d’une API (peu formalisée à ce jour) qui permet de piloter à distance diverses fonctions, comme la gestion des noms de domaines, des comptes FTP, des boites mails etc.

Avec l’arrivée de Letsencrypt, service permettant d’obtenir des certificats SSL/TLS de manière automatique, et surtout l’arrivée de la version 2 du protocole ACME associé, il est désormais possible d’obtenir des certificats SSL/TLS Wildcard (*.mondomaine.fr) facilement, avec une simple validation DNS.

Nous avons donc, pour faciliter la vie des administrateurs système, développé 2 scripts de « hook » pour Letsencrypt / Certbot, qui permettent de piloter le DNS d’AlternC et d’obtenir ainsi facilement un certificat wildcard à distance.

Etape 1 : obtention d’un token d’Api

Pour obtenir un token d’API pour votre compte AlternC, assurez-vous d’avoir le package alternc-api daté du 21/03/2019 ou après, soit la version 3.2.11 pour Wheezy ou 3.3.11 pour Jessie / Stretch. Une fois le package installé, vous pouvez demander un token en utilisant votre login / mot de passe ainsi :

https://votrepanel.alternc.org/api/auth/login?login=comptealternc&password=motdepasse&duration=3650

Cette url (en remplaçant le nom de domaine et le login/mot de passe par vos paramètres). Notez qu’il faut utiliser le compte AlternC sur lequel le domaine pour lequel vous souhaitez obtenir des certificats à distance est configuré. Ainsi vous obtenez un token d’API valable 10 ans. Notez le dans un coin, il ressemble à un truc comme « oWfv8QEgHf79xduKSVQyV85ztRkG1Gzv »

Une fois le token obtenu, il faut configurer certbot sur le serveur où vous souhaitez obtenir vos certificats.

Etape 2 : configuration de certbot sur le serveur distant

Sur le serveur où vous avez besoin d’obtenir des certificats, installez certbot (en vous assurant que vous avez bien une version compatible avec ACME v2, typiquement Certbot 0.20 minimum). Ensuite, Installez (par exemple dans /usr/local/lib/ les 2 scripts suivants : certbot-auth.php & certbot-cleanup.php

ensuite, il faut configurer ces plugins de la manière suivante : dans /etc/letsencrypt/alternc-plugin.conf mettez un json comme suit :


{
"votredomaine.fr": {
"server": "https://votrepanel.alternc.org",
"token": "oWfv8QEgHf79xduKSVQyV85ztRkG1Gzv"
}
}

Le json doit préciser, pour chaque domaine pour lequel vous souhaitez obtenir un certificat (normal ou wildcard, y compris pour des sous-sous-domaines), l’adresse du serveur alternc, et le token d’API à utiliser.

Une fois ce fichier de configuration créé, vous pouvez obtenir un certificat avec une simple commande certbot comme suit :


certbot certonly
--server https://acme-v02.api.letsencrypt.org/directory
--manual --manual-public-ip-logging-ok --preferred-challenges=dns
--manual-auth-hook /usr/local/lib/certbot-auth.php
--manual-cleanup-hook /usr/local/lib/certbot-cleanup.php
-d *.votredomaine.fr

Cette commande demande à Certbot d’utiliser les hooks auth & cleanup qui appellent l’API de votre AlternC pour ajouter puis supprimer le sous-domaine acme-challenge requis pour prouver la propriété du nom de domaine

Si vous avez des questions sur ce système, n’hésitez pas à nous contacter ;)