Skip to content

Commit 2a4643a

Browse files
authored
Merge pull request #82 from netmanagers/master
Fix certificate renewal checks
2 parents 8b5b4f4 + 2cbb50c commit 2a4643a

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

letsencrypt/domains.sls

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@
44
{% from "letsencrypt/map.jinja" import letsencrypt with context %}
55
66
{% if letsencrypt.use_package %}
7-
# Renew checks if the cert exists and needs to be renewed
8-
{% set check_cert_cmd = letsencrypt._cli_path ~ ' renew --dry-run --no-random-sleep-on-renew --cert-name' %}
7+
{% set check_cert_cmd = letsencrypt._cli_path ~ ' certificates --cert-name' %}
98
{% set renew_cert_cmd = letsencrypt._cli_path ~ ' renew' %}
9+
{% set create_cert_cmd = letsencrypt._cli_path %}
10+
1011
{% set old_check_cert_cmd_state = 'absent' %}
1112
{% set old_renew_cert_cmd_state = 'absent' %}
1213
{% set old_cron_state = 'absent' %}
13-
{% set create_cert_cmd = letsencrypt._cli_path %}
1414
1515
{% else %}
1616
{% set check_cert_cmd = '/usr/local/bin/check_letsencrypt_cert.sh' %}
1717
{% set renew_cert_cmd = '/usr/local/bin/renew_letsencrypt_cert.sh' %}
18+
{% set create_cert_cmd = letsencrypt.cli_install_dir ~ '/letsencrypt-auto' %}
19+
1820
{% set old_check_cert_cmd_state = 'managed' %}
1921
{% set old_renew_cert_cmd_state = 'managed' %}
2022
{% set old_cron_state = 'present' %}
21-
{% set create_cert_cmd = letsencrypt.cli_install_dir ~ '/letsencrypt-auto' %}
22-
{% endif %}
2323
2424
{{ check_cert_cmd }}:
2525
file.{{ old_check_cert_cmd_state }}:
@@ -35,17 +35,34 @@
3535
- require:
3636
- file: {{ check_cert_cmd }}
3737
38+
{% endif %}
39+
3840
{% for setname, domainlist in letsencrypt.domainsets.items() %}
3941
4042
# domainlist[0] represents the "CommonName", and the rest
4143
# represent SubjectAlternativeNames
4244
create-initial-cert-{{ setname }}-{{ domainlist | join('+') }}:
4345
cmd.run:
44-
- unless: {{ check_cert_cmd }} {{ setname }}
45-
- name: {{ create_cert_cmd }} {{ letsencrypt.create_init_cert_subcmd }} --quiet --cert-name {{ setname }} -d {{ domainlist|join(' -d ') }} --non-interactive
46+
- name: |
47+
{{ create_cert_cmd }} {{ letsencrypt.create_init_cert_subcmd }} \
48+
--quiet \
49+
--non-interactive \
50+
--cert-name {{ setname }} \
51+
-d {{ domainlist|join(' -d ') }}
4652
{% if not letsencrypt.use_package %}
4753
- cwd: {{ letsencrypt.cli_install_dir }}
4854
{% endif %}
55+
- unless:
56+
{% if letsencrypt.use_package %}
57+
- fun: cmd.run
58+
python_shell: true
59+
cmd: |
60+
{{ check_cert_cmd }} {{ setname }} \
61+
-d {{ domainlist|join(' -d ') }} | \
62+
/bin/grep -q "Certificate Name: {{ setname }}"
63+
{% else %}
64+
- {{ check_cert_cmd }} {{ setname }} {{ domainlist | join(' ') }}
65+
{% endif %}
4966
- require:
5067
{% if letsencrypt.use_package %}
5168
- pkg: letsencrypt-client

letsencrypt/files/check_letsencrypt_cert.sh.jinja

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
#!/bin/bash
22
{% from "letsencrypt/map.jinja" import letsencrypt with context %}
33

4-
FIRST_CERT=$1
5-
4+
CERT_NAME=$1
5+
shift
66
for DOMAIN in "$@"
77
do
8-
openssl x509 -in {{ letsencrypt.config_dir.path }}/live/$FIRST_CERT/cert.pem -noout -text | grep DNS:${DOMAIN} > /dev/null || exit 1
8+
openssl x509 -in {{ letsencrypt.config_dir.path }}/live/$CERT_NAME/cert.pem -noout -text | grep DNS:${DOMAIN} > /dev/null || exit 1
99
done
10-
CERT=$(date -d "$(openssl x509 -in {{ letsencrypt.config_dir.path }}/live/$FIRST_CERT/cert.pem -enddate -noout | cut -d'=' -f2)" "+%s")
10+
CERT=$(date -d "$(openssl x509 -in {{ letsencrypt.config_dir.path }}/live/$CERT_NAME/cert.pem -enddate -noout | cut -d'=' -f2)" "+%s")
1111
CURRENT=$(date "+%s")
1212
REMAINING=$((($CERT - $CURRENT) / 60 / 60 / 24))
1313
[ "$REMAINING" -gt "30" ] || exit 1

0 commit comments

Comments
 (0)