J’ai un problème avec mon NAS Synology. Lors de l’expiration d’un certificat, aucune notification n’est émise. Ce n’est même pas prévu par dans les paramètres.
J’utilise des certificats Let’s Encrypt mais pour des raisons techniques, ils ne sont pas générés par mon Synology. Du coup, à chaque renouvellement, je dois importer les nouveaux certificats sur mon NAS.
Même en notant la date d’expiration dans mon agenda, cela provoque des oublis et du coup des problèmes d’accès pour certains logiciels.
J’ai donc décidé de faire un script qui vérifie la date d’expiration d’un certificat et qui m’envoie une notification directement sur Gotify pour m’alerter du temps qu’il reste avant de devoir remplacer le certificat.
- Certificat déjà expiré
- 24 heures restantes
- 2 jours restant
- 5 jours restant
- 10 jours restant
À adapter au besoin bien évidemment
#!/bin/bash
certificat=/usr/certificate/example.com/cert.pem
gotify_url="https://gotify.example.com/message?token=xxxxx"
gotify_title="Certificat Synology"
function check_certificat () {
nombre_jour=$((${1}*86400))
if openssl x509 -checkend ${nombre_jour} -noout -in $certificat; then
return 1
else
return 0
fi
}
function notification () {
curl $gotify_url -F "title=${gotify_title}" -F "message=${1}"
}
# Certificat déjà expiré ?
if check_certificat 0; then
notification "Certificat expiré"
# 1 jour
elif check_certificat 1; then
notification "Moins de 24 heures avant expiration du certificat"
# 2 jours
elif check_certificat 2; then
notification "Deux jours restant avant expiration du certificat"
# 5 jours
elif check_certificat 5; then
notification "Cinq jours restant avant expiration du certificat"
# 10 jours
elif check_certificat 10; then
notification "Dix jours restant avant expiration du certificat"
fi
J’ai en suite créé une tache planifiée quotidienne sur le NAS (avec les droits root pour pouvoir accéder aux certificats du système).
Pour info sur un NAS Synology, les certificats sont stockés dans /usr/syno/etc/certificate/_archive/xxxx/*.pem
Il existe aussi des scripts ou des outils (comme Uptime Kuma) permettant de connaitre la date d’expiration d’un certificat depuis une simple requête HTTPS. Dans mon cas, le certificat n’est pas accessible depuis le web.
Pour les personnes qui se poseraient la question, j’ai tenté de faire un script pour remplacer directement les certificats enregistrés sur le Syno mais sans succès (trop de contrainte).
En espérant que ce script sera utile à d’autre.