Dans mon premier article sur ce blog, j’ai mentionné avoir installé un certificat wildcard (*.celeri.net) sur mon NAS Synology. Les avantages sont nombreux, à commencer par celui de ne pas avoir à remplacer celui en place (ou en ajouter un nouveau) à chaque fois que je décide d’utilier un nouveau sous-domaine. Synology ne permet pas (pour le moment ?) d’installer des  certificats wildcard sur ses NAS, mais on peut néanmoins utiliser les lignes de commande.

  1. On ouvre une connexion SSH sur le NAS avec « admin » comme login
  2. On commence par télécharger le script de création du certificat :
    • wget https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh
    • chmod a+x acme.sh
  3. On lance la requête permettant de créer le certificat :
    • ./acme.sh --issue -d *.celeri.net --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please [--force]
  4. En résultat, on obtient notamment les lignes suivantes :
    • Domain: ‘_acme-challenge.celeri.net’
    • TXT value: ‘qtlbfy4_7PYLwcQl1ya63tqYDw1SF2fKdx4OMJk6yaU’
  5. Dans le Manager d’OVH, dans la zone DNS de mon domaine « celeri.net », on crée une entrée de type TXT avec ces éléments pour permettre au challenge d’être réalisé sur le nom de domaine :
  6. Retour au Syno, on lance la validation du nom de domaine chez Let’s Encrypt :
    • ./acme.sh --renew -d *.celeri.net --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please [--force]
  7. En résultat, on obtient la création des fichiers nécessaires, comme annoncé en fin d’output :
    • Your cert is in /var/services/homes/admin/.acme.sh/.celeri.net/.celeri.net.cer
    • Your cert key is in /var/services/homes/admin/.acme.sh/.celeri.net/.celeri.net.key
    • The intermediate CA cert is in /var/services/homes/admin/.acme.sh/*.celeri.net/ca.cer
    • And the full chain certs is there: /var/services/homes/admin/.acme.sh/*.celeri.net/fullchain.cer
  8. Ces fichiers sont précieux, et méritent donc d’être enregistrés dans un dossier à part :
    • rm ~/Certs/celeri.net/* ; cp /var/services/homes/admin/.acme.sh/celeri.net/{celeri.net.cer,celeri.net.key,ca.cer} ~/Certs/celeri.net/
  9. On récupère alors ces fichiers via l’interface web du Syno (ou via SFTP)
  10. On crée un nouveau certificat en choississant l’option « Remplacer un certificat existant » (puisqu’il existe déjà; sinon choisir « Ajouter un nouveau certificat ») :
  11. Puis on choisit la fonction d’importation en pensant bien à indiquer que ce sera le certificat par défaut :
  12. Puis on choisit les bons fichiers :

Après un certain temps de traitement et un redémarrage du serveur web, normalement le nouveau certificat est fonctionnel !

À noter que cette méthode, puisqu’elle repose sur Let’s Encrypt par souci d’économie, ne permet de disposer que de certificats valables 3 mois, et qu’elle doit être reproduite à chaque fois manuellement car nécessite à la fois des manipulations sur le NAS et sur le serveur DNS. Le coût de la gratuité, en somme…

[MàJ – 25/05/2020] : Afin de permettre de renouveler plus facilement le certificat, j’ai mis à jour le script ACME.sh et ai implémenté l’API DNS d’OVH, ce qui fait que l’entrée TXT se met à jour automatiquement. Normalement, il n’y a donc plus qu’une seule commande à saisir sur le NAS avant de retourner à l’étape 7 :

cd acme.sh

./acme.sh --issue -d celeri.net -d '*.celeri.net' --dns dns_ovh

https://www.nas-forum.com/forum/topic/59379-lets-encrypt-certificats-wildcard/
Synology : Certificat Wildcard via Let’s Encrypt