aboutsummaryrefslogtreecommitdiffstats
path: root/roles/web/templates
diff options
context:
space:
mode:
authorAaron LI <aly@aaronly.me>2019-09-22 10:18:57 +0800
committerAaron LI <aly@aaronly.me>2019-09-22 10:22:21 +0800
commit64cd268f1cf113911bf4472fbb63efe53f6eb760 (patch)
treec8edd39007557e82fe1758867d8b0404314dd173 /roles/web/templates
parent60c85c56f25e10b9819214507ebd496cc0fbb855 (diff)
downloadansible-dfly-vps-64cd268f1cf113911bf4472fbb63efe53f6eb760.tar.bz2
web: Use 'acme.sh' to issue and renew certificates
The 'acme-client' seems obsolete and is missing from DPorts.
Diffstat (limited to 'roles/web/templates')
-rw-r--r--roles/web/templates/acme/deploy.sh.j227
-rw-r--r--roles/web/templates/acme/issue.sh.j219
2 files changed, 46 insertions, 0 deletions
diff --git a/roles/web/templates/acme/deploy.sh.j2 b/roles/web/templates/acme/deploy.sh.j2
new file mode 100644
index 0000000..141b112
--- /dev/null
+++ b/roles/web/templates/acme/deploy.sh.j2
@@ -0,0 +1,27 @@
+#!/bin/sh
+#
+# Deploy the issued certificates.
+#
+# Aaron LI
+# 2019-09-21
+#
+
+SSL_ROOT="{{ web.ssl_root }}"
+[ -d "${SSL_ROOT}" ] || mkdir -p -m 0700 ${SSL_ROOT}
+
+{% for domain in domains %}
+CERT_DIR="${SSL_ROOT}/{{ domain.name }}"
+[ -d "${CERT_DIR}" ] || mkdir -m 0700 ${CERT_DIR}
+acme.sh --install-cert --log /var/log/acme.sh.log \
+ --config-home {{ web.acme_home }}/.acme.sh \
+ --cert-home {{ web.acme_home }}/certs \
+ --domain {{ domain.name }} \
+ --key-file ${CERT_DIR}/key \
+ --cert-file ${CERT_DIR}/cert \
+ --fullchain-file ${CERT_DIR}/fullchain
+
+{% endfor %}
+
+echo "Reload relevant services ..."
+SCRIPT="{{ web.acme_home }}/deploy.local.sh"
+[ -f "${SCRIPT}" ] && sh ${SCRIPT} || exit 0
diff --git a/roles/web/templates/acme/issue.sh.j2 b/roles/web/templates/acme/issue.sh.j2
new file mode 100644
index 0000000..6e63fb4
--- /dev/null
+++ b/roles/web/templates/acme/issue.sh.j2
@@ -0,0 +1,19 @@
+#!/bin/sh
+#
+# Use 'acme.sh' to issue certificates.
+#
+# Aaron LI
+# 2019-09-21
+#
+
+{% for domain in domains %}
+acme.sh --issue --log /var/log/acme.sh.log \
+ --config-home {{ web.acme_home }}/.acme.sh \
+ --domain {{ domain.name }} \
+ {% for sub in domain.sub %}--domain {{ sub }}.{{ domain.name }} {% endfor %} \
+ --webroot {{ web.acme_webroot }} ||
+ echo "WARNING: exit with non-zero code: $?"
+
+{% endfor %}
+
+acme.sh --list