mirror of
https://github.com/hoellen/dockerfiles.git
synced 2025-04-20 12:29:16 +00:00
78 lines
2.7 KiB
Bash
78 lines
2.7 KiB
Bash
#!/bin/sh
|
|
|
|
## Variables
|
|
CSI="\033["
|
|
CEND="${CSI}0m"
|
|
CRED="${CSI}1;31m"
|
|
CGREEN="${CSI}1;32m"
|
|
CYELLOW="${CSI}1;33m"
|
|
CBLUE="${CSI}1;34m"
|
|
|
|
## Functions
|
|
f_log() {
|
|
LOG_TYPE=$1
|
|
LOG_MESSAGE=$2
|
|
|
|
case "${LOG_TYPE}" in
|
|
"INF")
|
|
echo -e "${CBLUE}=INF= $(date +%Y/%m/%d-%H:%M:%S) ${LOG_MESSAGE}${CEND}"
|
|
;;
|
|
"WRN")
|
|
echo -e "${CYELLOW}=WRN= $(date +%Y/%m/%d-%H:%M:%S) ${LOG_MESSAGE}${CEND}"
|
|
;;
|
|
"ERR")
|
|
echo -e "${CRED}=ERR= $(date +%Y/%m/%d-%H:%M:%S) ${LOG_MESSAGE}${CEND}"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
f_check_certs() {
|
|
LIST_DOMAINS=$(ls /nginx/ssl/certificates | grep .crt | grep -v issuer | sed 's|.crt||g')
|
|
RELOAD_NGINX=0
|
|
|
|
for domain in ${LIST_DOMAINS}; do
|
|
CERTFILE=/nginx/ssl/certificates/${domain}.cert.pem
|
|
KEYFILE=/nginx/ssl/certificates/${domain}.key
|
|
CHAINFILE=/nginx/ssl/certificates/${domain}.chain.pem
|
|
FULLCHAINFILE=/nginx/ssl/certificates/${domain}.crt
|
|
SCTFILE=/nginx/ssl/timestamps/${domain}/fullchain.sct
|
|
|
|
SSL_ALGO="$(openssl x509 -text -in ${FULLCHAINFILE} | grep "Public Key Algorithm" | awk '{print $4}')"
|
|
SSL_SIZE="$(openssl x509 -text -in ${FULLCHAINFILE} | grep "Public-Key" | sed 's/^.*(\(.*\) bit)$/\1/')"
|
|
|
|
if [ "${SSL_ALGO}" == "rsaEncryption" ]; then
|
|
SSL_TYPE="rsa${SSL_SIZE}"
|
|
elif [ "${SSL_ALGO}" == "id-ecPublicKey" ]; then
|
|
SSL_TYPE="ec${SSL_SIZE}"
|
|
fi
|
|
|
|
mkdir -p /nginx/www/${domain}
|
|
openssl x509 -checkend 864000 -noout -in "${FULLCHAINFILE}"
|
|
if [ $? == 0 ]; then
|
|
f_log INF "Certificate for ${domain} is good for another 10 days!"
|
|
else
|
|
f_log INF "Generate New Certificate for ${domain}"
|
|
/usr/local/bin/lego -a -m ${EMAIL} -d ${domain} --path /nginx/ssl --webroot /nginx/www/${domain} -k ${SSL_TYPE} renew
|
|
if [ $? == 0 ]; then
|
|
if [ -e ${FULLCHAINFILE} ]; then
|
|
head -$(grep -n "END CERTIFICATE" ${FULLCHAINFILE} | head -1 | cut -d: -f1) ${FULLCHAINFILE} > ${CERTFILE}
|
|
tail -$(($(wc -l ${FULLCHAINFILE} | awk '{print $1}')-$(grep -n "END CERTIFICATE" ${FULLCHAINFILE} | head -1 | cut -d: -f1))) ${FULLCHAINFILE} > ${CHAINFILE}
|
|
RELOAD_NGINX=1
|
|
if [ -f ${SCTFILE} ]; then
|
|
ct-submit ct.googleapis.com/pilot <${FULLCHAINFILE}>${SCTFILE}
|
|
fi
|
|
f_log INF "New Certificate for ${domain} generated"
|
|
fi
|
|
else
|
|
f_log ERR "New Certificate for ${domain} not generated"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
f_check_certs
|
|
|
|
if [ ${RELOAD_NGINX} -eq 1 ]; then
|
|
nginx reload
|
|
fi
|