Files
SavaneWiki/docs/Savaneprod/2025-03-31-certificats-wildcard-pour-synology.md
jf 5e313b2c35
All checks were successful
continuous-integration/drone/push Build is passing
Update docs/Savaneprod/2025-03-31-certificats-wildcard-pour-synology.md
2025-05-05 23:09:17 +02:00

81 lines
4.5 KiB
Markdown

---
title: "Générer et mettre à jour automatiquement un certificat \"wildcard\" auprès de ZeroSSL et le déployer dans Synology DSM."
summary: "ZeroSSL to Synology DSM wildcard certificate"
author:
- JF
date: 2025-03-31
---
# Générer et mettre à jour automatiquement un certificat "wildcard" auprès de ZeroSSL et le déployer dans Synology DSM.
Jusqu'à présent, les certificats des domaines dont je suis le propriétaire étaient mis à jour selon ce qui est explicité à cette page : [Générer et mettre à jour automatiquement un certificat "wildcard" let's encrypt.](2019-12-16-wildcard-lets-encrypt-certificate.md)
Nous sommes en mars 2025, Trump et sa bande sont à la tête d'un Pays munis du [Cloud Act](https://fr.wikipedia.org/wiki/CLOUD_Act). Il est grand temps de rapatrier la fourniture des certificats de notre côté de l'Atlantique. Le seul service gratuit permettant d'utiliser [acme.sh](https://github.com/acmesh-official/acme.sh) que j'ai pu trouvé, c'est [ZeroSSL](https://zerossl.com/). Et ça tombe bien, c'est devenu le service par défaut utilisé par [acme.sh](https://github.com/acmesh-official/acme.sh/wiki/Change-default-CA-to-ZeroSSL).
La contrepartie de passer de Let's encrypt à ZeroSSL, est qu'il est nécessaire d'avoir un compte.
De base je n'aimais pas le principe d'installer acme.sh, d'autant plus que ça ne fonctionnait pas de manière standard avec Synology DSM. C'était l'occasion d'écrire un beau script qui utilise le [conteneur docker](https://github.com/acmesh-official/acme.sh/wiki/Run-acme.sh-in-docker) pour la génération et le renouvellement des certificats.
Pour importer automatiquement les certificats dans Synology DSM j'utilise le script acme.sh en "stateless", sans le cache ou autres bidules. Sans ça il faudrait passer des identifiants root dans le conteneur Docker ; pas terrible.
## Utilisation du script
Prérequis :
- Un compte [ZeroSSL](https://app.zerossl.com/signup).
- La commande `git` installée via le dépôt Synocommunity [https://synocommunity.com/package/git](https://synocommunity.com/package/git).
- Pour le dépôt Synocommunity, tu peux suivre l'exemple de Borg : [ICI](./Savaneprod/2020-12-04-borg-backup/#installation-de-borg-sur-le-synology)
```bash
cd /la/ou/qutu/veux/que/ton/certificat/il/soit
git clone https://gitea.savaneprod.fr/Savaneprod/Certificats.git
```
- Tu crées un fichier `bidule.domain` dans `./domains` qui contient le **Common Name** et le **Subject Alternative Name** :
```bash
DOMAIN='savaneprod.fr'
SUBJECT_ALTERNATIVE_NAME='*.savaneprod.fr'
```
## Côté infomaniak
### Pour le challenge DNS (vérification que l'on possède bien le nom de domaine)
- Utilisation de l'API infomaniak : [https://github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_infomaniak](https://github.com/acmesh-official/acme.sh/wiki/dnsapi2#dns_infomaniak)
- Création d'un token d'API pour la gestion des entrées DNS :
Depuis la page d'accueil. Aller dans "Utilisateur et profil", "Mon profil", "Développeur" et "Tokens API".
![Création d'un token d'API pour gérer les entrées DNS](infomaniak_API_token.png)
- À partir de ça tu crées un fichier `INFOMANIAK_API_TOKEN.secret` qui contient :
```bash
INFOMANIAK_API_TOKEN="mon_t0k3n_9uil_e2t_grand_et_b1en_utile"
```
## Côté ZeroSSL
### Afin d'obtenir des clefs d'API
Depuis l'interface ZeroSSL on va pouvoir générer des clefs qui nous permettront d'utiliser une API spécialement conçue pour acme.sh .
![Dashboard ZeroSSL](zerossl_1.png)
![Modale apparaissant lorsqu'on demande la génération des clefs d'API](zerossl_2.png)
À partir de ces clefs tu crées un fichier `ZEROSSL.secret` qui contient :
```bash
EAB_KID='lapetiteclef'
EAB_HMAC_KEY='laGrosse_ClefDeLamort\gna'
```
## *Et pis c'est tout !*
T'as plus qu'à exécuter [`issue-or-renew-certs-for-dsm.sh`](https://gitea.savaneprod.fr/Savaneprod/Certificats/src/branch/main/issue-or-renew-certs-for-dsm.sh).
## La conf dans DSM dans le planificateur de tâches
![Planificateur de tâche, onglet "General"](task_general-tab.png)
J'ai finalement décidé de renouveler tous les mois parce que le Synology propose tous les 3 mois mais la durée de vie du certificat est légèrement inférieure. Et je n'ai pas cherché à configurer le renouvellement tous les deux mois. En plus acme.sh fait une vérification pour toi.
![Planificateur de tâches, onglet "Schedule"](task_Schedule-tab.png)
Exécution du script. Il faut bien entendu que le script ait la permission d'éxécution configurée.
![Planificateur de tâches, onglet "Task Settings"](task_setting-tab.png)