|
4 | 4 | path: "{{ certificates_ca_directory_certs }}/ca.crt" |
5 | 5 | register: _certificates_ca_cert |
6 | 6 |
|
| 7 | +- name: 'Check for an existing CA key' |
| 8 | + ansible.builtin.stat: |
| 9 | + path: "{{ certificates_ca_directory_keys }}/ca.key" |
| 10 | + register: _certificates_existing_ca_key |
| 11 | + |
| 12 | +- name: 'Detect whether the existing CA key is password-encrypted' |
| 13 | + ansible.builtin.command: |
| 14 | + cmd: "grep -q ENCRYPTED {{ certificates_ca_directory_keys }}/ca.key" |
| 15 | + register: _certificates_ca_key_encrypted |
| 16 | + changed_when: false |
| 17 | + failed_when: false |
| 18 | + when: _certificates_existing_ca_key.stat.exists |
| 19 | + |
| 20 | +- name: 'Decrypt a legacy password-encrypted CA key in place' |
| 21 | + community.crypto.openssl_privatekey_convert: |
| 22 | + src_path: "{{ certificates_ca_directory_keys }}/ca.key" |
| 23 | + src_passphrase: "{{ certificates_ca_password }}" |
| 24 | + dest_path: "{{ certificates_ca_directory_keys }}/ca.key" |
| 25 | + format: pkcs8 |
| 26 | + mode: '0600' |
| 27 | + when: |
| 28 | + - _certificates_existing_ca_key.stat.exists |
| 29 | + - (_certificates_ca_key_encrypted.rc | default(1)) == 0 |
| 30 | + no_log: true |
| 31 | + |
| 32 | +- name: 'Remove the obsolete CA key password file' |
| 33 | + ansible.builtin.file: |
| 34 | + path: "{{ certificates_ca_directory_keys }}/ca.pwd" |
| 35 | + state: absent |
| 36 | + |
7 | 37 | - name: 'Generate CA' |
8 | 38 | when: |
9 | 39 | - (not _certificates_ca_cert.stat.exists or certificates_renew_ca) |
10 | 40 | block: |
11 | | - - name: 'Create CA key password file' |
12 | | - ansible.builtin.copy: |
13 | | - content: "{{ certificates_ca_password }}" |
14 | | - dest: "{{ certificates_ca_directory_keys }}/ca.pwd" |
15 | | - owner: root |
16 | | - group: root |
17 | | - mode: '0600' |
18 | | - no_log: true |
19 | | - |
20 | 41 | - name: 'Create CA private key' |
21 | 42 | community.crypto.openssl_privatekey: |
22 | 43 | path: "{{ certificates_ca_directory_keys }}/ca.key" |
23 | 44 | type: "{{ certificates_algorithm_type }}" |
24 | 45 | size: "{{ certificates_algorithm_size }}" |
25 | | - passphrase: "{{ certificates_ca_password }}" |
26 | 46 | owner: root |
27 | 47 | group: root |
28 | 48 | mode: '0600' |
|
31 | 51 | community.crypto.openssl_csr: |
32 | 52 | path: "{{ certificates_ca_directory_requests }}/ca.csr" |
33 | 53 | privatekey_path: "{{ certificates_ca_directory_keys }}/ca.key" |
34 | | - privatekey_passphrase: "{{ certificates_ca_password }}" |
35 | 54 | common_name: "{{ certificates_ca_subject }}" |
36 | 55 | use_common_name_for_san: false |
37 | 56 | basic_constraints: |
|
49 | 68 | path: "{{ certificates_ca_directory_certs }}/ca.crt" |
50 | 69 | csr_path: "{{ certificates_ca_directory_requests }}/ca.csr" |
51 | 70 | privatekey_path: "{{ certificates_ca_directory_keys }}/ca.key" |
52 | | - privatekey_passphrase: "{{ certificates_ca_password }}" |
53 | 71 | provider: selfsigned |
54 | 72 | selfsigned_not_after: "+{{ certificates_ca_validity_days }}d" |
55 | 73 | force: "{{ certificates_renew_ca | bool }}" |
|
0 commit comments