blob: 00d19c59bf17a083bca039c2837e3e0d26b73c7a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
---
- name: compute path to ownca certificate directory
set_fact:
ownca_cert_path: "{{ ownca_cert_config.path | default([ownca_cert_base_dir, ownca_cert_name] | path_join) }}"
- name: create directory for ownca certificate
file:
path: "{{ ownca_cert_path }}"
state: directory
mode: "{{ ownca_cert_config.mode | default('0700') }}"
owner: "{{ ownca_cert_config.owner | default(omit) }}"
group: "{{ ownca_cert_config.group | default(omit) }}"
notify:
- reload services for x509 certificates
- restart services for x509 certificates
- name: generate key for ownca certificate
openssl_privatekey:
path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-key.pem"
mode: "{{ ownca_cert_config.key.mode | default('0600') }}"
owner: "{{ ownca_cert_config.key.owner | default(omit) }}"
group: "{{ ownca_cert_config.key.group | default(omit) }}"
type: "{{ ownca_cert_config.key.type | default(omit) }}"
size: "{{ ownca_cert_config.key.size | default(omit) }}"
notify:
- reload services for x509 certificates
- restart services for x509 certificates
register: _ownca_key_
- name: generate csr for ownca certificate
community.crypto.openssl_csr:
path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-csr.pem"
mode: "{{ ownca_cert_config.cert.mode | default('0644') }}"
owner: "{{ ownca_cert_config.cert.owner | default(omit) }}"
group: "{{ ownca_cert_config.cert.group | default(omit) }}"
privatekey_path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-key.pem"
create_subject_key_identifier: "{{ ownca_cert_config.cert.create_subject_key_identifier | default(omit) }}"
digest: "{{ ownca_cert_config.cert.digest | default(omit) }}"
common_name: "{{ ownca_cert_config.cert.common_name | default(ownca_cert_name) }}"
subject_alt_name: "{{ ['DNS:'] | product(ownca_cert_hostnames) | map('join') | union(ownca_cert_config.cert.san_extra | default([])) | list }}"
subject_alt_name_critical: yes
use_common_name_for_san: no
country_name: "{{ ownca_cert_config.cert.country_name | default(omit) }}"
locality_name: "{{ ownca_cert_config.cert.locality_name | default(omit) }}"
organization_name: "{{ ownca_cert_config.cert.organization_name | default(omit) }}"
organizational_unit_name: "{{ ownca_cert_config.cert.organizational_unit_name | default(omit) }}"
state_or_province_name: "{{ ownca_cert_config.cert.state_or_province_name | default(omit) }}"
basic_constraints: "{{ ownca_cert_config.cert.basic_constraints | default(omit) }}"
basic_constraints_critical: "{{ ownca_cert_config.cert.basic_constraints_critical | default(omit) }}"
key_usage: "{{ ownca_cert_config.cert.key_usage | default(omit) }}"
key_usage_critical: "{{ ownca_cert_config.cert.key_usage_critical | default(omit) }}"
extended_key_usage: "{{ ownca_cert_config.cert.extended_key_usage | default(omit) }}"
extended_key_usage_critical: "{{ ownca_cert_config.cert.extended_key_usage_critical | default(omit) }}"
- name: check if ownca certificate already exists
stat:
path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-crt.pem"
register: _ownca_cert_file_
- name: check validity of existing ownca certificate
when: _ownca_cert_file_.stat.exists
openssl_certificate_info:
path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-crt.pem"
valid_at:
renew_margin: "{{ ownca_cert_config.cert.renew_margin | default(ownca_cert_default_renew_margin) }}"
register: _ownca_cert_info_
- name: generate ownca certificate
community.crypto.x509_certificate:
path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-crt.pem"
mode: "{{ ownca_cert_config.cert.mode | default('0644') }}"
owner: "{{ ownca_cert_config.cert.owner | default(omit) }}"
group: "{{ ownca_cert_config.cert.group | default(omit) }}"
csr_path: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-csr.pem"
provider: ownca
ownca_content: "{{ ownca_cert_config.ca.cert_content }}"
ownca_privatekey_content: "{{ ownca_cert_config.ca.key_content }}"
ownca_digest: "{{ ownca_cert_config.cert.digest | default(omit) }}"
ownca_not_before: "{{ ownca_cert_config.cert.not_before | default(omit) }}"
ownca_not_after: "{{ ownca_cert_config.cert.not_after | default(omit) }}"
force: "{{ _ownca_cert_file_.stat.exists and (not _ownca_cert_info_.valid_at.renew_margin) }}"
notify:
- reload services for x509 certificates
- restart services for x509 certificates
register: _ownca_cert_
- name: export paths to certificate files
set_fact:
x509_certificate_path_key: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-key.pem"
x509_certificate_path_cert: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-crt.pem"
x509_certificate_path_chain: ""
x509_certificate_path_fullchain: "{{ ownca_cert_path }}/{{ ownca_cert_name }}-crt.pem"
- name: generate custom post-renewal script
when: x509_certificate_renewal is defined
template:
src: updated.sh.j2
dest: "{{ ownca_cert_path }}/updated.sh"
mode: 0755
- name: call custom post-renewal script
when:
- x509_certificate_renewal is defined
- (_ownca_key_ is changed) or (_ownca_cert_ is changed)
command: "{{ ownca_cert_path }}/updated.sh"
|