70 lines
2.1 KiB
YAML
70 lines
2.1 KiB
YAML
---
|
|
|
|
# ---
|
|
# TLS Certificate
|
|
# ---
|
|
|
|
# - method 'generate'
|
|
|
|
- name: Build Pure-FTPd TLS subject.
|
|
ansible.builtin.set_fact:
|
|
common_pureftpd_tls_subject: >-
|
|
/C={{ pureftpd_tls_certificate_openssl.country | default('') }}
|
|
/ST={{ pureftpd_tls_certificate_openssl.state | default('') }}
|
|
/L={{ pureftpd_tls_certificate_openssl.locality | default('') }}
|
|
/O={{ pureftpd_tls_certificate_openssl.organization | default('') }}
|
|
/OU={{ pureftpd_tls_certificate_openssl.unit | default('') }}
|
|
/CN={{ pureftpd_tls_certificate_openssl.fqdn }}
|
|
when:
|
|
- pureftpd_tls_certificate_method == 'generate'
|
|
- pureftpd_tls_certificate_openssl | length > 0
|
|
|
|
- name: Generate Pure-FTPd TLS certificate.
|
|
ansible.builtin.command:
|
|
argv:
|
|
- openssl
|
|
- req
|
|
- -x509
|
|
- -nodes
|
|
- -newkey
|
|
- rsa:{{ pureftpd_tls_certificate_openssl.size | default(4096) }}
|
|
- -sha256
|
|
- -days
|
|
- '{{ pureftpd_tls_certificate_openssl.days | default(365) }}'
|
|
- -keyout
|
|
- '{{ pureftpd_tls_certificate_pem }}'
|
|
- -out
|
|
- '{{ pureftpd_tls_certificate_pem }}'
|
|
- -subj
|
|
- '{{ common_pureftpd_tls_subject }}'
|
|
args:
|
|
creates: "{{ pureftpd_tls_certificate_pem }}"
|
|
when:
|
|
- pureftpd_tls_certificate_method == 'generate'
|
|
- pureftpd_tls_certificate_openssl | length > 0
|
|
notify: restart Pure-FTPd
|
|
|
|
- name: Ensure Pure-FTPd TLS certificate permissions.
|
|
ansible.builtin.file:
|
|
path: "{{ pureftpd_tls_certificate_pem }}"
|
|
owner: root
|
|
group: root
|
|
mode: '0600'
|
|
state: file
|
|
when:
|
|
- pureftpd_tls_certificate_method == 'generate'
|
|
- pureftpd_tls_certificate_openssl | length > 0
|
|
|
|
# - final checks
|
|
|
|
- name: (pure-ftpd-install.yml) Verify TLS certificate exists.
|
|
ansible.builtin.stat:
|
|
path: "{{ pureftpd_tls_certificate_pem }}"
|
|
register: common_pureftpd_tls_certificate
|
|
|
|
- name: (pure-ftpd-install.yml) Fail when no certificate is found.
|
|
ansible.builtin.fail:
|
|
msg: |
|
|
The certificate file was not found at {{ pureftpd_tls_certificate_pem }}
|
|
when: not common_pureftpd_tls_certificate.stat.exists | default(false)
|