From 009e7b42cb665fc2c22882f4bad5d9996f7ce380 Mon Sep 17 00:00:00 2001 From: ynerant <ynerant@crans.org> Date: Thu, 11 Feb 2021 17:35:31 +0100 Subject: [PATCH] [certbot] Generate multiple certificates (useful for adm) Signed-off-by: ynerant <ynerant@crans.org> --- group_vars/certbot.yml | 12 ++++++------ host_vars/gitzly.adm.crans.org.yml | 17 +++++++++++++---- host_vars/hodaur.adm.crans.org.yml | 7 ++++++- plays/certbot.yml | 2 +- plays/dovecot.yml | 4 ++-- plays/freeradius.yml | 2 +- plays/gitlab.yml | 19 ++++++------------- plays/postfix.yml | 11 ++++++----- plays/reverse-proxy.yml | 2 +- roles/certbot/tasks/main.yml | 17 +++++++++++++---- .../letsencrypt/conf.d/certname.ini.j2 | 10 +++++----- .../certbot/templates/letsencrypt/dhparam.j2 | 8 ++++++++ .../templates/letsencrypt/rfc2136.ini.j2 | 6 +++--- 13 files changed, 71 insertions(+), 46 deletions(-) create mode 100644 roles/certbot/templates/letsencrypt/dhparam.j2 diff --git a/group_vars/certbot.yml b/group_vars/certbot.yml index 3dd13db9..311e9ac8 100644 --- a/group_vars/certbot.yml +++ b/group_vars/certbot.yml @@ -1,8 +1,8 @@ --- 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 - certname: crans.org - domains: "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 + certname: crans.org + domains: "crans.org" diff --git a/host_vars/gitzly.adm.crans.org.yml b/host_vars/gitzly.adm.crans.org.yml index f7105157..f72209b3 100644 --- a/host_vars/gitzly.adm.crans.org.yml +++ b/host_vars/gitzly.adm.crans.org.yml @@ -4,7 +4,16 @@ interfaces: srv: ens19 loc_certbot: - dns_rfc2136_name: certbot_adm_challenge. - dns_rfc2136_secret: "{{ vault_certbot_adm_dns_secret }}" - 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 + 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 + certname: adm.crans.org + domains: "*.adm.crans.org" diff --git a/host_vars/hodaur.adm.crans.org.yml b/host_vars/hodaur.adm.crans.org.yml index 2aa4c194..ddf97016 100644 --- a/host_vars/hodaur.adm.crans.org.yml +++ b/host_vars/hodaur.adm.crans.org.yml @@ -1,3 +1,8 @@ --- loc_certbot: - domains: "crans.org, *.crans.org, crans.fr, *.crans.fr, crans.eu, *.crans.eu" + - dns_rfc2136_server: '172.16.10.147' + dns_rfc2136_name: certbot_challenge. + dns_rfc2136_secret: "{{ vault_certbot_dns_secret }}" + mail: root@crans.org + certname: crans.org + domains: "crans.org, *.crans.org, crans.fr, *.crans.fr, crans.eu, *.crans.eu" diff --git a/plays/certbot.yml b/plays/certbot.yml index e1a97312..76bb969a 100755 --- a/plays/certbot.yml +++ b/plays/certbot.yml @@ -3,7 +3,7 @@ # Deploy certbot for LE certificates - hosts: certbot vars: - certbot: '{{ glob_certbot | default({}) | combine(loc_certbot | default({})) }}' + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' mirror: '{{ glob_mirror.name }}' roles: - certbot diff --git a/plays/dovecot.yml b/plays/dovecot.yml index 13a70d7f..32e02ca4 100755 --- a/plays/dovecot.yml +++ b/plays/dovecot.yml @@ -3,9 +3,9 @@ # Deploy dovecot server - hosts: dovecot vars: - certbot: '{{ glob_certbot | default({}) | combine(loc_certbot | default({})) }}' + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' ldap: '{{ glob_ldap | default({}) | combine(loc_ldap | default({})) }}' dovecot: '{{ glob_dovecot | default({}) | combine(loc_dovecot | default({})) }}' roles: - certbot - - dovecot \ No newline at end of file + - dovecot diff --git a/plays/freeradius.yml b/plays/freeradius.yml index 51d994e1..f356fe49 100755 --- a/plays/freeradius.yml +++ b/plays/freeradius.yml @@ -3,7 +3,7 @@ # Deploy radius server - hosts: radius vars: - certbot: '{{ glob_certbot | default({}) | combine(loc_certbot | default({})) }}' + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' freeradius: '{{ glob_freeradius | default({}) | combine(loc_freeradius | default({})) }}' mirror: '{{ glob_mirror.name }}' roles: diff --git a/plays/gitlab.yml b/plays/gitlab.yml index 1e1b6410..9a47c8c5 100755 --- a/plays/gitlab.yml +++ b/plays/gitlab.yml @@ -6,16 +6,9 @@ - docker - gitlab-runner -# This seems strange, don't know if it still used -# - hosts: gitzly.adm.crans.org -# vars: -# certbot: -# dns_rfc2136_name: certbot_adm_challenge. -# dns_rfc2136_secret: "{{ vault_certbot_adm_dns_secret }}" -# mail: root@crans.org -# certname: adm.crans.org -# domains: "*.adm.crans.org" -# bind: -# masters: "{{ lookup('re2oapi', 'get_role', 'dns-authoritary-master')[0] }}" -# roles: -# - certbot +# Install Gitlab +- hosts: git + vars: + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' + roles: + - certbot diff --git a/plays/postfix.yml b/plays/postfix.yml index 8f66e28b..37195fa6 100755 --- a/plays/postfix.yml +++ b/plays/postfix.yml @@ -4,11 +4,12 @@ - hosts: sputnik.adm.crans.org, boeing.adm.crans.org, redisdead.adm.crans.org, titanic.adm.crans.org vars: certbot: - dns_rfc2136_name: certbot_challenge. - dns_rfc2136_secret: "{{ vault_certbot_dns_secret }}" - mail: root@crans.org - certname: crans.org - domains: "*.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 + certname: crans.org + domains: "*.crans.org" bind: masters: "{{ lookup('re2oapi', 'get_role', 'dns-authoritary-master')[0] }}" opendkim: diff --git a/plays/reverse-proxy.yml b/plays/reverse-proxy.yml index 0e25fc50..04c3fb38 100755 --- a/plays/reverse-proxy.yml +++ b/plays/reverse-proxy.yml @@ -2,7 +2,7 @@ --- - hosts: reverseproxy vars: - certbot: '{{ glob_certbot | default({}) | combine(loc_certbot | default({})) }}' + certbot: '{{ loc_certbot | default(glob_certbot | default([])) }}' mirror: '{{ glob_mirror.name }}' roles: - certbot diff --git a/roles/certbot/tasks/main.yml b/roles/certbot/tasks/main.yml index fbe6a6ae..812aff2c 100644 --- a/roles/certbot/tasks/main.yml +++ b/roles/certbot/tasks/main.yml @@ -20,9 +20,16 @@ - name: Add DNS credentials template: src: letsencrypt/rfc2136.ini.j2 - dest: /etc/letsencrypt/rfc2136.ini + dest: "/etc/letsencrypt/rfc2136.{{ item.certname }}.ini" mode: 0600 owner: root + loop: "{{ certbot }}" + +- name: Add dhparam + template: + src: "letsencrypt/dhparam.j2" + dest: "/etc/letsencrypt/dhparam" + mode: 0644 - name: Create /etc/letsencrypt/conf.d file: @@ -32,8 +39,10 @@ - name: Add Certbot configuration template: src: "letsencrypt/conf.d/certname.ini.j2" - dest: "/etc/letsencrypt/conf.d/{{ certbot.certname }}.ini" + dest: "/etc/letsencrypt/conf.d/{{ item.certname }}.ini" mode: 0644 + loop: "{{ certbot }}" -- name: Run certbot - command: certbot --non-interactive --config /etc/letsencrypt/conf.d/{{ certbot.certname }}.ini certonly +- name: Run certbot + command: certbot --non-interactive --config /etc/letsencrypt/conf.d/{{ item.certname }}.ini certonly + loop: "{{ certbot }}" diff --git a/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 b/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 index cbf247b4..1fc1a19b 100644 --- a/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 +++ b/roles/certbot/templates/letsencrypt/conf.d/certname.ini.j2 @@ -1,7 +1,7 @@ {{ ansible_header | comment(decoration='# ') }} # To generate the certificate, please use the following command -# certbot --config /etc/letsencrypt/conf.d/{{ certbot.certname }}.ini certonly +# certbot --config /etc/letsencrypt/conf.d/{{ item.certname }}.ini certonly # Use a 4096 bit RSA key instead of 2048 rsa-key-size = 4096 @@ -10,7 +10,7 @@ rsa-key-size = 4096 # server = https://acme-staging.api.letsencrypt.org/directory # Uncomment and update to register with the specified e-mail address -email = {{ certbot.mail }} +email = {{ item.mail }} # Uncomment to use a text interface instead of ncurses text = True @@ -20,9 +20,9 @@ agree-tos = True # Use DNS-01 challenge authenticator = dns-rfc2136 -dns-rfc2136-credentials = /etc/letsencrypt/rfc2136.ini +dns-rfc2136-credentials = /etc/letsencrypt/rfc2136.{{ item.certname }}.ini dns-rfc2136-propagation-seconds = 30 # Wildcard the domain -cert-name = {{ certbot.certname }} -domains = {{ certbot.domains }} +cert-name = {{ item.certname }} +domains = {{ item.domains }} diff --git a/roles/certbot/templates/letsencrypt/dhparam.j2 b/roles/certbot/templates/letsencrypt/dhparam.j2 new file mode 100644 index 00000000..9b182b72 --- /dev/null +++ b/roles/certbot/templates/letsencrypt/dhparam.j2 @@ -0,0 +1,8 @@ +-----BEGIN DH PARAMETERS----- +MIIBCAKCAQEA//////////+t+FRYortKmq/cViAnPTzx2LnFg84tNpWp4TZBFGQz ++8yTnc4kmz75fS/jY2MMddj2gbICrsRhetPfHtXV/WVhJDP1H18GbtCFY2VVPe0a +87VXE15/V8k1mE8McODmi3fipona8+/och3xWKE2rec1MKzKT0g6eXq8CrGCsyT7 +YdEIqUuyyOP7uWrat2DX9GgdT0Kj3jlN9K5W7edjcrsZCwenyO4KbXCeAvzhzffi +7MA0BM0oNC9hkXL+nOmFg/+OTxIy7vKBg8P+OxtMb61zO7X8vC7CIAXFjvGDfRaD +ssbzSibBsu/6iGtCOGEoXJf//////////wIBAg== +-----END DH PARAMETERS----- diff --git a/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 b/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 index 140283cb..0fb2a8d9 100644 --- a/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 +++ b/roles/certbot/templates/letsencrypt/rfc2136.ini.j2 @@ -1,7 +1,7 @@ {{ ansible_header | comment(decoration='# ') }} -dns_rfc2136_server = {{ certbot.dns_rfc2136_server }} +dns_rfc2136_server = {{ item.dns_rfc2136_server }} dns_rfc2136_port = 53 -dns_rfc2136_name = {{ certbot.dns_rfc2136_name }} -dns_rfc2136_secret = {{ certbot.dns_rfc2136_secret }} +dns_rfc2136_name = {{ item.dns_rfc2136_name }} +dns_rfc2136_secret = {{ item.dns_rfc2136_secret }} dns_rfc2136_algorithm = HMAC-SHA512 -- GitLab