Files
SavaneWiki/docs/Savaneprod/2019-12-16-wildcard-lets-encrypt-certificate.md
jf e8185dc9a9
All checks were successful
continuous-integration/drone/push Build is passing
Update docs/Savaneprod/2019-12-16-wildcard-lets-encrypt-certificate.md
2025-03-06 15:27:00 +01:00

3.9 KiB

title, summary, author, date
title summary author date
Générer et mettre à jour automatiquement un certificat "wildcard" let's encrypt. brief decription to sum up
JF
2019-12-16

Générer et mettre à jour automatiquement un certificat "wildcard" let's encrypt.

Installation de acme.sh

# 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

Le script fonctionne aussi pour une création de certificat avec l'ajout dans le Synology.

Chez Gandi

Utilsation de l'API Gandi : https://github.com/acmesh-official/acme.sh/wiki/dnsapi#18-use-gandi-livedns-api

Le script de mise à jour

SYNOPATH="/volume1/something"
API="dns_gandi_livedns"
ACME_SH_PATH="$SYNOPATH/Certificats/acme.sh/acme.sh"

jour=$(date +%Y-%m-%d)
file='$SYNOPATH/Certificats/'$jour'.log'

HOME_orig=$HOME
HOME="$SYNOPATH/Certificats/.acme.sh"

DOMAIN='savaneprod.fr'
SUBJECT_ALTERNATIVE_NAME='*.savaneprod.fr'

export GANDI_LIVEDNS_KEY="la clef récupérée chez Gandi"

export SYNO_Certificate="savaneprod.fr cert"
# Creates the cert in DSM if it does not exist in Security/Certificate management.
export SYNO_Create=1
# When run locally, use an automatically created temp admin. Deletes it after use.
# https://github.com/acmesh-official/acme.sh/wiki/deployhooks#20-deploy-the-certificate-to-synology-dsm
export SYNO_USE_TEMP_ADMIN=1

echo "*********************************************" 2>&1 | tee -a $file
echo "  Mise à jour du certificat $DOMAIN" 2>&1 | tee -a $file
echo "*********************************************" 2>&1 | tee -a $file

#Lors d'une première utilisation:
##  Il est nécessaire de --issue et de passer SYNO_Create à 1.
##  Décommenter la ligne suivante et commenter la ligne d'après.
#bash $ACME_SH_PATH --home $HOME --issue -d $DOMAIN -d $SUBJECT_ALTERNATIVE_NAME --server letsencrypt --dns dns_infomaniak --force
bash $ACME_SH_PATH --home $HOME --renew -d $DOMAIN -d $SUBJECT_ALTERNATIVE_NAME --server letsencrypt --dns dns_infomaniak --force --log 2>&1 | tee -a $file
bash $ACME_SH_PATH --home $HOME -d $DOMAIN -d $SUBJECT_ALTERNATIVE_NAME --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

Création d'un token d'API pour gérer les entrées DNS

  • On peut alors modifier le script avec les valeurs suivantes :
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

Planificateur de tâche, onglet "General"

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. Planificateur de tâches, onglet "Schedule"

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"