Skip to content
This repository was archived by the owner on Dec 24, 2023. It is now read-only.

Commit be14a9a

Browse files
author
Cristian Chiru
committed
Fix: proper CA cert generation
1 parent c369603 commit be14a9a

File tree

9 files changed

+39
-8
lines changed

9 files changed

+39
-8
lines changed

README.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
## Usage
2020
- Copy directory `samples/ansible-inventory` to the project root
2121
- Edit `hosts` and `host_vars` to your needs
22+
- `ip` is needed in host_vars to force /etc/hosts in container, avoiding name resolve issues
2223
- Create a `playbook-vars.yml` file, using the [sample](samples/playbook-vars.yml) as inspiration
2324
- Deploy: `./run-playbook.sh`
2425
- Remove: `./run-playbook.sh -e docker_compose_command=down`
@@ -49,7 +50,7 @@
4950
| docker_logging_max_file | `5` | Maximum docker log files before recycling |
5051
| |
5152
| openldap_image | `tiredofit/openldap` | Base docker image. At the moment, [tiredofit](https://hub.docker.com/r/tiredofit/openldap) release seems to be working better than oxisia one |
52-
| openldap_version | `6.9.2` | Docker image tag |
53+
| openldap_version | `7.1.5` | Docker image tag |
5354
| |
5455
| ldap_port_plain | `389` | Plain ldap port |
5556
| ldap_port_ssl | `636` | TLS ldap port |

playbook.yml

+4
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,17 @@
1515
- copy:
1616
src: "{{ local_ldap_dir_certs }}/{{ item }}"
1717
dest: "{{ ldap_dir_certs }}/"
18+
owner: 389
19+
group: 389
1820
loop:
1921
- ca.crt
2022
- dhparam.pem
2123
- server.key
2224
- copy:
2325
src: "{{ local_ldap_dir_certs }}/{{ ansible_host }}.crt"
2426
dest: "{{ ldap_dir_certs }}/server.crt"
27+
owner: 389
28+
group: 389
2529
roles:
2630
- role: openldap
2731
tags: openldap

roles/openldap/defaults/main.yml

-2
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ ldap_ppolicy_use_cracklib: 1
5858

5959
## TLS cipher suite. Default ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:-DHE-DSS:-RSA:!aNULL:!MD5:!DSS:!SHA
6060
ldap_tls_cipher_suite: "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:-DHE-DSS:-RSA:!aNULL:!MD5:!DSS:!SHA"
61-
## TLS DHParam Keysize. Default 2048
62-
ldap_tls_dh_param_keysize: 2048
6361

6462
ldap_debug_mode: 'false'
6563

roles/openldap/templates/docker-compose/tiredofit/openldap-docker-compose.yaml.j2

+10-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ services:
66
volumes:
77
- {{ ldap_dir_data }}:/var/lib/openldap
88
- {{ ldap_dir_config }}:/etc/openldap/slapd.d
9-
- {{ ldap_dir_certs }}:/assets/slapd/certs
9+
- {{ ldap_dir_certs }}:/certs
1010
- {{ _ldap_dir_backup }}:/data/backup
1111
ports:
1212
- "{{ ldap_port_plain }}:389"
@@ -61,9 +61,11 @@ services:
6161
TLS_CIPHER_SUITE: "{{ ldap_tls_cipher_suite }}"
6262
TLS_CRT_FILENAME: "server.crt"
6363
TLS_DH_PARAM_FILENAME: "dhparam.pem"
64-
TLS_DH_PARAM_KEYSIZE: "{{ ldap_tls_dh_param_keysize }}"
6564
TLS_ENFORCE: "false"
6665
TLS_KEY_FILENAME: "server.key"
66+
TLS_CREATE_CA: "false"
67+
TLS_CA_CRT_PATH: "/certs"
68+
TLS_VERIFY_CLIENT: "demand"
6769

6870
ENABLE_REPLICATION: "true"
6971
## olcSyncRepl options used for the config database. Without rid and provider which are automatically added based on REPLICATION_HOSTS. Default binddn="cn=admin,cn=config" bindmethod=simple credentials=$CONFIG_PASS searchbase="cn=config" type=refreshAndPersist retry="60 +" timeout=1 starttls=critical
@@ -82,3 +84,9 @@ services:
8284
DEBUG_MODE: "{{ ldap_debug_mode }}"
8385

8486
ENABLE_ZABBIX: "{{ ldap_enable_zabbix }}"
87+
extra_hosts:
88+
{% for host in ansible_play_hosts %}
89+
{% if hostvars[host]['ansible_host'] != ansible_host %}
90+
- {{ hostvars[host]['ansible_host'] }}:{{ hostvars[host]['ip'] }}
91+
{% endif %}
92+
{% endfor %}

roles/openssl/defaults/main.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
local_ldap_dir_certs: /etc/ssl/private
2-
ldap_tls_dh_param_keysize: 2048
2+
force_generate: no
3+
ldap_tls_keysize: 2048
4+
ldap_ca_subject: LDAP CA

roles/openssl/tasks/main.yml

+17-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
file:
33
path: "{{ local_ldap_dir_certs }}"
44
state: directory
5+
owner: 389
6+
group: 389
57

68
- name: Generate private keys
79
openssl_privatekey:
810
path: "{{ local_ldap_dir_certs }}/{{ item }}.key"
911
backup: yes
12+
force: "{{ force_generate }}"
1013
loop:
1114
- "server"
1215
- "ca"
@@ -15,8 +18,16 @@
1518
openssl_csr:
1619
path: "{{ local_ldap_dir_certs }}/ca.csr"
1720
privatekey_path: "{{ local_ldap_dir_certs }}/ca.key"
18-
common_name: LDAP CA
21+
common_name: "{{ ldap_ca_subject }}"
22+
key_usage:
23+
- digitalSignature
24+
- keyEncipherment
25+
- keyCertSign
26+
extended_key_usage:
27+
- clientAuth
28+
- serverAuth
1929
backup: yes
30+
force: "{{ force_generate }}"
2031

2132
- name: Generate CA certificate
2233
openssl_certificate:
@@ -25,13 +36,15 @@
2536
csr_path: "{{ local_ldap_dir_certs}}/ca.csr"
2637
provider: selfsigned
2738
backup: yes
39+
force: "{{ force_generate }}"
2840

2941
- name: Generate server CSR
3042
openssl_csr:
3143
path: "{{ local_ldap_dir_certs }}/{{ hostvars[item]['ansible_host'] }}.csr"
3244
privatekey_path: "{{ local_ldap_dir_certs }}/server.key"
3345
common_name: "{{ hostvars[item]['ansible_host'] }}"
3446
backup: yes
47+
force: "{{ force_generate }}"
3548
loop: "{{ groups['nodes'] }}"
3649

3750
- name: Sign server certificate
@@ -43,13 +56,15 @@
4356
ownca_path: "{{ local_ldap_dir_certs }}/ca.crt"
4457
ownca_privatekey_path: "{{ local_ldap_dir_certs }}/ca.key"
4558
backup: yes
59+
force: "{{ force_generate }}"
4660
loop: "{{ groups['nodes'] }}"
4761

4862
- name: Generate Diffie-Hellman parameters
4963
openssl_dhparam:
5064
path: "{{ local_ldap_dir_certs }}/dhparam.pem"
51-
size: "{{ ldap_tls_dh_param_keysize }}"
65+
size: "{{ ldap_tls_keysize }}"
5266
backup: yes
67+
force: "{{ force_generate }}"
5368

5469
- name: Set appropriate permissions
5570
file:
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
ip: 1.2.3.1
12
ansible_host: myhost1.fqdn
23
ansible_port: 22
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
ip: 1.2.3.2
12
ansible_host: myhost1.fqdn
23
ansible_port: 22
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
ip: 1.2.3.3
12
ansible_host: myhost1.fqdn
23
ansible_port: 22

0 commit comments

Comments
 (0)