Update docs/Savaneprod/2025-03-31-certificats-wildcard-pour-synology.md
This commit is contained in:
@@ -39,9 +39,9 @@ INFOMANIAK_API_TOKEN="mon_t0k3n_9uil_e2t_grand_et_b1en_utile"
|
|||||||
|
|
||||||
La contrepartie de passer de Let's encrypt à ZeroSSL, est qu'il est nécessaire d'avoir un compte. Depuis ce compte on va pouvoir générer des clefs qui nous permettront d'utiliser une API spécialement conçue pour acme.sh .
|
La contrepartie de passer de Let's encrypt à ZeroSSL, est qu'il est nécessaire d'avoir un compte. Depuis ce compte 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 :
|
À partir de ces clefs tu crées un fichier `ZEROSSL.secret` qui contient :
|
||||||
```bash
|
```bash
|
||||||
@@ -51,7 +51,100 @@ EAB_HMAC_KEY='laGrosse_ClefDeLamort\gna'
|
|||||||
|
|
||||||
## *Et pis c'est tout !*
|
## *Et pis c'est tout !*
|
||||||
|
|
||||||
T'as plus qu'à exécuter `issue-or-renew-certs-for-dsm.sh` and :
|
T'as plus qu'à exécuter `issue-or-renew-certs-for-dsm.sh`.
|
||||||
|
```bash
|
||||||
|
SCRIPT_PATH="$(dirname $(readlink -f $BASH_SOURCE))"
|
||||||
|
DOMAIN_FILES_PATH="$SCRIPT_PATH/domains"
|
||||||
|
ACMESH_CONTAINER_DATA_PATH="$SCRIPT_PATH/data"
|
||||||
|
ACMESH_LOCAL_PATH="$SCRIPT_PATH/acme.sh"
|
||||||
|
|
||||||
|
JOUR="$(date +%Y-%m-%d_%H%M)"
|
||||||
|
LOGFILENAME="logs/$JOUR.log"
|
||||||
|
|
||||||
|
if [ "$1" = "--help" ]
|
||||||
|
then
|
||||||
|
docker run --rm -it neilpang/acme.sh --help
|
||||||
|
docker rmi -f neilpang/acme.sh
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
ls $DOMAIN_FILES_PATH/*.domain > /dev/null 2>&1
|
||||||
|
if [ $? -eq 2 ]
|
||||||
|
then
|
||||||
|
echo "No domain file exists.
|
||||||
|
At least one .domain file must exists at $DOMAIN_FILES_PATH.
|
||||||
|
The file defines variables \$DOMAIN and \$SUBJECT_ALTERNATIVE_NAME."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d $SCRIPT_PATH/logs ]
|
||||||
|
then mkdir -p $SCRIPT_PATH/logs
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SCRIPT_PATH/INFOMANIAK_API_TOKEN.secret ]
|
||||||
|
then source $SCRIPT_PATH/INFOMANIAK_API_TOKEN.secret
|
||||||
|
else echo "
|
||||||
|
Le token d'API d'Infomaniak est manquant.
|
||||||
|
INFOMANIAK_API_TOKEN.secret doit définir la variable INFOMANIAK_API_TOKEN=\"xxxxx\"
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $SCRIPT_PATH/ZEROSSL.secret ]
|
||||||
|
then source $SCRIPT_PATH/ZEROSSL.secret
|
||||||
|
else echo "
|
||||||
|
Les clefs d'API de zeroSSL sont manquantes.
|
||||||
|
Le fichier ZEROSSL.secret doit définir les variables EAB_KID='xxx' et EAB_HMAC_KEY='xxx'
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for d in $(ls $DOMAIN_FILES_PATH/*.domain)
|
||||||
|
do
|
||||||
|
source $d
|
||||||
|
if [ -d $ACMESH_CONTAINER_DATA_PATH/$DOMAIN_ecc ]
|
||||||
|
then ISSUE_OR_RENEW="--renew"; ACTION="Renouvellement"
|
||||||
|
else
|
||||||
|
ISSUE_OR_RENEW="--issue"; ACTION="Création"
|
||||||
|
mkdir $ACMESH_CONTAINER_DATA_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "####### $ACTION du certificat $DOMAIN #######" | tee -a $SCRIPT_PATH/$LOGFILENAME
|
||||||
|
|
||||||
|
docker run --rm -it \
|
||||||
|
-v "$ACMESH_CONTAINER_DATA_PATH":/acme.sh \
|
||||||
|
-v "$SCRIPT_PATH/logs:/logs" \
|
||||||
|
-e $INFOMANIAK_API_TOKEN \
|
||||||
|
neilpang/acme.sh $ISSUE_OR_RENEW -d $DOMAIN -d $SUBJECT_ALTERNATIVE_NAME --server zerossl --eab-kid $EAB_KID --eab-hmac-key $EAB_HMAC_KEY --dns dns_infomaniak --log "/$LOGFILENAME"
|
||||||
|
|
||||||
|
echo "####### Déploiement du certificat $DOMAIN sur DSM #######" | tee -a $SCRIPT_PATH/$LOGFILENAME
|
||||||
|
|
||||||
|
if [ ! -d $ACMESH_LOCAL_PATH ]
|
||||||
|
then git clone https://github.com/acmesh-official/acme.sh.git $ACMESH_LOCAL_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
|
export SYNO_CERTIFICATE="$DOMAIN 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
|
||||||
|
|
||||||
|
bash $ACMESH_LOCAL_PATH/acme.sh --home $ACMESH_CONTAINER_DATA_PATH -d $DOMAIN -d $SUBJECT_ALTERNATIVE_NAME --deploy --deploy-hook synology_dsm --log $SCRIPT_PATH/$LOGFILENAME
|
||||||
|
|
||||||
|
unset DOMAIN SUBJECT_ALTERNATIVE_NAME
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "
|
||||||
|
####### Suppression de $ACMESH_LOCAL_PATH... ########
|
||||||
|
"
|
||||||
|
rm -rf $ACMESH_LOCAL_PATH
|
||||||
|
echo "
|
||||||
|
####### Suppresion de l'image docker... #######
|
||||||
|
"
|
||||||
|
docker rmi -f neilpang/acme.sh
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
```
|
||||||
|
|
||||||
## La conf dans DSM dans le planificateur de tâches
|
## La conf dans DSM dans le planificateur de tâches
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user