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 et php-cli (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 (N’hésitez pas à ajouter « -d votredomaine.fr » sans le *. pour avoir un certificat AUSSI valable pour le domaine vide ;) )

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