From d25eb9382f815697d6b46b812b70c46915b92666 Mon Sep 17 00:00:00 2001 From: shirenn <shirenn@crans.org> Date: Tue, 16 Nov 2021 23:24:23 +0100 Subject: [PATCH] [certbot] Much things --- group_vars/certbot.yml | 23 ++++++++++--- group_vars/radius.yml | 5 +-- group_vars/reverseproxy.yml | 32 ++++++++++++++++--- host_vars/gitzly.adm.crans.org.yml | 30 +++++++++++------ host_vars/redisdead.adm.crans.org.yml | 23 +++++++++++++ host_vars/rodauh.cachan-adm.crans.org.yml | 5 +-- host_vars/sputnik.adm.crans.org.yml | 29 ++++++++++++----- hosts | 1 + plays/certbot.yml | 6 ++-- roles/certbot/tasks/main.yml | 18 ----------- .../letsencrypt/conf.d/certname.ini.j2 | 8 +++-- .../templates/letsencrypt/rfc2136.ini.j2 | 7 ---- 12 files changed, 123 insertions(+), 64 deletions(-) delete mode 100644 roles/certbot/templates/letsencrypt/rfc2136.ini.j2 diff --git a/group_vars/certbot.yml b/group_vars/certbot.yml index 7540ee94..2ec065c3 100644 --- a/group_vars/certbot.yml +++ b/group_vars/certbot.yml @@ -1,8 +1,23 @@ --- glob_certbot: - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: crans.org domains: "*.crans.org" + +glob_service_certbot: + name: certbot + install_dir: /var/local/services/certbot + dependencies: + - python3-dnspython + git: + remote: https://gitlab.adm.crans.org/nounous/certbot + version: main + config: + "crans.org": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 diff --git a/group_vars/radius.yml b/group_vars/radius.yml index b68111f2..e2add971 100644 --- a/group_vars/radius.yml +++ b/group_vars/radius.yml @@ -19,9 +19,6 @@ glob_freeradius: server: radius-wifi loc_certbot: - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: crans.org domains: "crans.org" diff --git a/group_vars/reverseproxy.yml b/group_vars/reverseproxy.yml index 1ab0f6ed..1a9c85d5 100644 --- a/group_vars/reverseproxy.yml +++ b/group_vars/reverseproxy.yml @@ -1,11 +1,35 @@ loc_certbot: - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: crans.org domains: "crans.org, *.crans.org, crans.fr, *.crans.fr, crans.eu, *.crans.eu" +loc_service_certbot: + config: + "crans.org": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 + "crans.eu": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 + "crans.fr": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 + loc_nginx: servers: [] ssl: diff --git a/host_vars/gitzly.adm.crans.org.yml b/host_vars/gitzly.adm.crans.org.yml index ef63b728..b7a62d71 100644 --- a/host_vars/gitzly.adm.crans.org.yml +++ b/host_vars/gitzly.adm.crans.org.yml @@ -4,20 +4,32 @@ interfaces: srv: ens19 loc_certbot: - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: crans.org domains: "*.crans.org" - - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_adm_challenge. - dns_rfc2136_secret: "{{ vault.certbot_adm_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: adm.crans.org domains: "*.adm.crans.org" +loc_service_certbot: + config: + "crans.org": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 + "adm.crans.org": + zone: _acme-challenge.adm.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_adm_challenge. + secret: "{{ vault.certbot_adm_dns_secret }}" + algorithm: HMAC-SHA512 + loc_nginx: ssl: - name: adm.crans.org diff --git a/host_vars/redisdead.adm.crans.org.yml b/host_vars/redisdead.adm.crans.org.yml index 1674deb2..ffb8ec04 100644 --- a/host_vars/redisdead.adm.crans.org.yml +++ b/host_vars/redisdead.adm.crans.org.yml @@ -10,3 +10,26 @@ postfix: dkim: true titanic: false +loc_certbot: + - mail: root@crans.org + certname: crans.org + domains: "*.adm.crans.org, *.crans.org" + +loc_service_certbot: + config: + "crans.org": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 + "adm.crans.org": + zone: _acme-challenge.adm.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_adm_challenge. + secret: "{{ vault.certbot_adm_dns_secret }}" + algorithm: HMAC-SHA512 diff --git a/host_vars/rodauh.cachan-adm.crans.org.yml b/host_vars/rodauh.cachan-adm.crans.org.yml index 9d8fb425..5bcdded4 100644 --- a/host_vars/rodauh.cachan-adm.crans.org.yml +++ b/host_vars/rodauh.cachan-adm.crans.org.yml @@ -4,10 +4,7 @@ interfaces: cachan_srv: ens19 loc_certbot: - - dns_rfc2136_server: '185.230.79.9' - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: crans.org domains: "crans.org, *.crans.org, crans.fr, *.crans.fr, crans.eu, *.crans.eu" diff --git a/host_vars/sputnik.adm.crans.org.yml b/host_vars/sputnik.adm.crans.org.yml index fecb1cc3..06a65091 100644 --- a/host_vars/sputnik.adm.crans.org.yml +++ b/host_vars/sputnik.adm.crans.org.yml @@ -33,19 +33,32 @@ loc_moinmoin: main: false loc_certbot: - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_adm_challenge. - dns_rfc2136_secret: "{{ vault.certbot_adm_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: adm.crans.org domains: "*.adm.crans.org" - - dns_rfc2136_server: '172.16.10.147' - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault.certbot_dns_secret }}" - mail: root@crans.org + - mail: root@crans.org certname: crans.org domains: "*.crans.org" +loc_service_certbot: + config: + "crans.org": + zone: _acme-challenge.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_challenge. + secret: "{{ vault.certbot_dns_secret }}" + algorithm: HMAC-SHA512 + "adm.crans.org": + zone: _acme-challenge.adm.crans.org + server: 172.16.10.147 + port: 53 + key: + name: certbot_adm_challenge. + secret: "{{ vault.certbot_adm_dns_secret }}" + algorithm: HMAC-SHA512 + loc_nginx: service_name: wiki ssl: diff --git a/hosts b/hosts index 79952599..e33a34ee 100644 --- a/hosts +++ b/hosts @@ -38,6 +38,7 @@ galene gitlab jitsi mailman +postfix radius # We use certbot to manage LE certificates reverseproxy thelounge diff --git a/plays/certbot.yml b/plays/certbot.yml index 76bb969a..f6b4de37 100755 --- a/plays/certbot.yml +++ b/plays/certbot.yml @@ -1,9 +1,9 @@ #!/usr/bin/env ansible-playbook --- -# Deploy certbot for LE certificates -- hosts: certbot +- hosts: certbot !zamok.adm.crans.org vars: + service: "{{ glob_service_certbot | default({}) | combine(loc_service_certbot | default({})) }}" certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' - mirror: '{{ glob_mirror.name }}' roles: + - service - certbot diff --git a/roles/certbot/tasks/main.yml b/roles/certbot/tasks/main.yml index eb50fc02..e764ee44 100644 --- a/roles/certbot/tasks/main.yml +++ b/roles/certbot/tasks/main.yml @@ -4,20 +4,11 @@ update_cache: true name: - certbot - - python3-certbot-dns-rfc2136 state: present register: apt_result retries: 3 until: apt_result is succeeded -- name: Add DNS credentials - template: - src: letsencrypt/rfc2136.ini.j2 - dest: "/etc/letsencrypt/rfc2136.{{ item.certname }}.ini" - mode: 0600 - owner: root - loop: "{{ certbot }}" - - name: Add dhparam template: src: "letsencrypt/dhparam.j2" @@ -41,12 +32,3 @@ register: certbot_output changed_when: not "Certificate not yet due for renewal" in certbot_output.stdout loop: "{{ certbot }}" - -- name: Clean old files - file: - path: "{{ item }}" - state: absent - loop: - - "/etc/letsencrypt/options-ssl-nginx.conf" - - "/etc/letsencrypt/ssl-dhparams.pem" - - "/etc/letsencrypt/rfc2136.ini" diff --git a/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 b/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 index 1fc1a19b..66104e1c 100644 --- a/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 +++ b/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 @@ -19,9 +19,11 @@ text = True agree-tos = True # Use DNS-01 challenge -authenticator = dns-rfc2136 -dns-rfc2136-credentials = /etc/letsencrypt/rfc2136.{{ item.certname }}.ini -dns-rfc2136-propagation-seconds = 30 +authenticator = manual +manual-auth-hook = /var/local/services/certbot/authenticator.py +manual-cleanup-hook = /var/local/services/certbot/cleanup.py +preferred-challenges = dns-01, +manual-public-ip-logging-ok = True # Wildcard the domain cert-name = {{ item.certname }} diff --git a/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 b/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 deleted file mode 100644 index 0fb2a8d9..00000000 --- a/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 +++ /dev/null @@ -1,7 +0,0 @@ -{{ ansible_header | comment(decoration='# ') }} - -dns_rfc2136_server = {{ item.dns_rfc2136_server }} -dns_rfc2136_port = 53 -dns_rfc2136_name = {{ item.dns_rfc2136_name }} -dns_rfc2136_secret = {{ item.dns_rfc2136_secret }} -dns_rfc2136_algorithm = HMAC-SHA512 -- GitLab