85 lines
3.3 KiB
Markdown
85 lines
3.3 KiB
Markdown
---
|
|
title: "Générer et mettre à jour automatiquement un certificat \"wildcard\" let's encrypt."
|
|
summary: "brief decription to sum up"
|
|
author:
|
|
- JF
|
|
date: 2019-12-16
|
|
---
|
|
# Générer et mettre à jour automatiquement un certificat "wildcard" let's encrypt.
|
|
|
|
## Installation de acme.sh
|
|
```bash
|
|
# 1 - Being root
|
|
|
|
SYNOPATH="/volume1/something"
|
|
cd $SYNOPATH
|
|
|
|
git clone https://github.com/acmesh-official/acme.sh.git
|
|
|
|
./acme.sh/acme.sh --install --nocron --home $SYNOPATH/acme.sh/.acme.sh --accountemail "admin@savaneprod.fr"
|
|
```
|
|
|
|
|
|
Sur DSM, les certificats se trouvent dans `/usr/syno/etc/certificate/_archive/`.
|
|
|
|
## Mise à jour automatique du certificat
|
|
|
|
### Chez Gandi
|
|
|
|
Utilsation de l'API Gandi : [https://github.com/acmesh-official/acme.sh/wiki/dnsapi#18-use-gandi-livedns-api](https://github.com/acmesh-official/acme.sh/wiki/dnsapi#18-use-gandi-livedns-api)
|
|
|
|
### Le script de mise à jour
|
|
|
|
```bash
|
|
SYNOPATH="/volume1/something"
|
|
API="dns_gandi_livedns"
|
|
|
|
jour=$(date +%Y-%m-%d)
|
|
file='$SYNOPATH/Certificats/'$jour'.log'
|
|
|
|
HOME_orig=$HOME
|
|
HOME="$SYNOPATH/Certificats/.acme.sh"
|
|
|
|
export GANDI_LIVEDNS_KEY="la clef récupérée chez Gandi"
|
|
|
|
export SYNO_Certificate="savaneprod.fr cert"
|
|
export SYNO_Create=0
|
|
export SYNO_Username="admin_c_pas_top"
|
|
export SYNO_Password="Un mdp de ouf"
|
|
|
|
echo "*********************************************" 2>&1 | tee -a $file
|
|
echo " Mise à jour du certificat *.savaneprod.fr" 2>&1 | tee -a $file
|
|
echo "*********************************************" 2>&1 | tee -a $file
|
|
|
|
bash $SYNOPATH/Certificats/acme.sh/acme.sh --home $HOME --renew -d savaneprod.fr -d '*.savaneprod.fr' --dns $API --force --log 2>&1 | tee -a $file
|
|
bash $SYNOPATH/Certificats/acme.sh/acme.sh --home $HOME -d savaneprod.fr -d "*.savaneprod.fr" --deploy --deploy-hook synology_dsm --log 2>&1 | tee -a $file
|
|
|
|
echo "---------------------------------" 2>&1 | tee -a $file
|
|
echo " Fin du script de mise à jour." 2>&1 | tee -a $file
|
|
echo "*********************************" 2>&1 | tee -a $file
|
|
```
|
|
### Chez infomaniak
|
|
|
|
* 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".
|
|
|
|

|
|
* On peut alors modifier le script avec les valeurs suivantes :
|
|
```bash
|
|
API="dns_infomaniak_add"
|
|
export INFOMANIAK_API_TOKEN="mon_t0k3n_9uil_e2t_grand_et_b1en_utile"
|
|
```
|
|
Il faut le sauvegarder en lieu sûr, car une fois créé il ne sera plus possible de le consulter.
|
|
|
|
### La conf dans DSM dans le planificateur de tâches
|
|
|
|

|
|
|
|
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.
|
|

|
|
|
|
Exécution du script. Il faut bien entendu que le script ait la permission d'éxécution configurée.
|
|

|
|
|