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
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
|
|
|