77 lines
3.3 KiB
Bash
77 lines
3.3 KiB
Bash
|
#!/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
|