summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcertrenew34
1 files changed, 34 insertions, 0 deletions
diff --git a/certrenew b/certrenew
new file mode 100755
index 0000000..8d696fa
--- /dev/null
+++ b/certrenew
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+set -e
+
+main() {
+ if [[ ! -d /etc/letsencrypt/live ]]; then
+ die "no letsencrypt dir found"
+ fi
+
+ if (($#<2)); then
+ printf "usage: %s <webroot> <domains ...>\n" "${0##*/}"
+ exit 1
+ fi
+
+ local webroot=$1; shift;
+ local -a domains=("$@")
+
+ local cert="/etc/letsencrypt/live/${domains[0]}/cert.pem"
+
+ # renew if expires within 8 weeks
+ if ! openssl x509 -noout -checkend $((8*7*86400)) -in "${cert}"; then
+ letsencrypt certonly --email bluewind@xinu.at --agree-tos --renew-by-default --webroot -w "$webroot" "${domains[@]/#/-d }"
+ fi
+
+ return 0
+}
+
+die() {
+ printf "%s\n" "$1" >&2
+ exit 1
+}
+
+main "$@"
+