You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
3.3 KiB

#!/bin/bash
# /volume1/docker/gitea/copy_LE_Cert.sh
# https://www.synology-forum.de/showthread.html?90435-Bitwarden-auf-der-Synology-%28Docker%29&p=750679&viewfull=1#post750679
# Für welche Domain ist das Zertifikat ausgestellt:
domain="example.com"
# wie ist der Name des Dockerimages (für Neustart):
image="gitea"
# Der Zielordner für das Zertifikat:
DEST_certdir=/volume1/docker/gitea/SSL
# Zieldateinamen von crt und key file im Zertifikatsordner:
# hier sind ggf. individuelle Anpassungen notwendig, je nachdem, wie das Cert benötigt wird.
#DEST_crt=certificate.crt
#DEST_cacrt=ca.crt
#DEST_key=private.key.pem
DEST_crt=certs.pem
DEST_key=key.pem
#----------------------------- ab hier nichts mehr ändern ------------------------------------
skriptuser=`whoami`
if [ ${skriptuser} != "root" ]; then
echo "Dieses Skript muss von Root ausgeführt werden!"
exit 1
fi
echo "Prüfe auf Zertifikats-Aktualisierung für $domain"
# uid:gid used to change ownership in certificate folder
uid=root
gid=root
for current_domain_cert in /usr/syno/etc/certificate/_archive/*; do
if [ -d ${current_domain_cert} ] && [ -f ${current_domain_cert}/cert.pem ];then
openssl x509 -in ${current_domain_cert}/cert.pem -text | grep DNS:${domain} > /dev/null 2>&1
domain_found=$?
if [ "${domain_found}" = "0" ]; then
# time of last file change, seconds since Epoch
last_change_cert_key=$(stat -c %Y ${current_domain_cert}/privkey.pem)
echo "Dateipfad des Zertifikats für ${domain}: ${current_domain_cert}"
if [ -f ${DEST_certdir}/${DEST_key} ];then
last_change_DEST_cert_key=$(stat -c %Y ${DEST_certdir}/${DEST_key})
else
last_change_DEST_cert_key=0
fi
if [ ${last_change_DEST_cert_key} -le ${last_change_cert_key} ]; then
echo "Das Ziel-SSL-Zertifikat ist nicht mehr aktuell … aktualisiere vom Domain-Zertifikat:"
#cp ${current_domain_cert}/privkey.pem ${DEST_certdir}/${DEST_key}
#cp ${current_domain_cert}/cert.pem ${DEST_certdir}/${DEST_crt}
#cp ${current_domain_cert}/chain.pem ${DEST_certdir}/${DEST_cacrt}
cp ${current_domain_cert}/fullchain.pem ${DEST_certdir}/${DEST_crt}
cp ${current_domain_cert}/privkey.pem ${DEST_certdir}/${DEST_key}
# original: cat ${current_domain_cert}/cert.pem ${current_domain_cert}/fullchain.pem > ${DEST_certdir}/${DEST_crt}
echo "passe die Dateirechte an:"
chown ${uid}:${gid} ${DEST_certdir}/*
chmod 444 ${DEST_certdir}/*
echo "Neustart des Dockercontainers $image um das Zertifikat zu aktivieren"
container_id=$(docker ps | grep "${image}" | cut -c1-12)
echo "Container-ID of ${image}: $container_id"
docker stop ${container_id}
docker start ${container_id}
echo "das SSL-Zertifikat für den Container ${image} wurde aktualisiert"
else
echo "es gab nichts zu tun. Das SSL-Zertifikat für den Container ${image} ist das selbe oder neuer als das Domainzertifikat"
fi
fi
fi
done