#!/bin/sh set -eu COMPOSE=/usr/local/sbin/han-vm1-compose TLS_DIR=/var/lib/han-chat/public-tls TLS_GROUP=han-nginx-tls lineage=${RENEWED_LINEAGE:?Certbot did not provide RENEWED_LINEAGE} test -s "$lineage/fullchain.pem" test -s "$lineage/privkey.pem" test -d "$TLS_DIR" getent group "$TLS_GROUP" >/dev/null staging=$(mktemp -d "${TLS_DIR}/.renew.XXXXXX") trap 'rm -rf -- "$staging"' EXIT HUP INT TERM install -m 0640 -o root -g "$TLS_GROUP" \ "$lineage/fullchain.pem" "$staging/fullchain.pem" install -m 0640 -o root -g "$TLS_GROUP" \ "$lineage/privkey.pem" "$staging/privkey.pem" cert_public=$( openssl x509 -in "$staging/fullchain.pem" -pubkey -noout | openssl pkey -pubin -outform DER 2>/dev/null | sha256sum | awk '{print $1}' ) key_public=$( openssl pkey -in "$staging/privkey.pem" -passin pass: -pubout -outform DER 2>/dev/null | sha256sum | awk '{print $1}' ) [ "$cert_public" = "$key_public" ] || { echo "renewed certificate and private key do not match" >&2 exit 1 } mv -f "$staging/fullchain.pem" "$TLS_DIR/fullchain.pem" mv -f "$staging/privkey.pem" "$TLS_DIR/privkey.pem" rmdir "$staging" trap - EXIT HUP INT TERM container=$("$COMPOSE" ps --status running --quiet nginx) [ -n "$container" ] || { echo "HAN VM1 nginx is not running" >&2 exit 1 } if ! output=$("$COMPOSE" exec -T nginx nginx -t -c /tmp/nginx.conf 2>&1); then printf '%s\n' "$output" >&2 exit 1 fi /usr/bin/docker kill --signal HUP "$container" >/dev/null