diff --git a/files/update-ca-certificates b/files/update-ca-certificates new file mode 100644 index 0000000000000000000000000000000000000000..80360b5eb6108b29cb2c9e823267a3aee7fd2f23 --- /dev/null +++ b/files/update-ca-certificates @@ -0,0 +1,7 @@ +#!/bin/sh -e +# Update the CA certificates store. + +test -d /etc/ssl/certs || echo "/etc/ssl/certs doesn't exist." +test -w /etc/ssl/cert.pem || chmod 0644 /etc/ssl/cert.pem + +cat /etc/ssl/certs/*.pem > /etc/ssl/cert.pem diff --git a/handlers/main.yml b/handlers/main.yml index 79964fc3796c1d0efbe6777d65f3f417b68e1894..304fe01d25e1bc32b55271f2e1ecd11e789067b4 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -2,7 +2,7 @@ # handlers file for ansible-common - name: Update CA store - command: /usr/sbin/update-ca-certificates + command: '{{ update_ca_certificates[ansible_os_family] }}' - name: Restart rsyslog service: diff --git a/tasks/add_tls_cert.yml b/tasks/add_tls_cert.yml index 3ae3a1262143014f84fcd6bd4855d2fd5180cb54..42f783f11950a0a15ba2b8e8ed0c851d98e12af9 100644 --- a/tasks/add_tls_cert.yml +++ b/tasks/add_tls_cert.yml @@ -3,11 +3,11 @@ - name: Assert assert: that: - - "ansible_os_family in [ 'Debian' ]" + - "ansible_os_family in [ 'Debian', 'OpenBSD' ]" - "extra_tls_certs is defined" - name: apt install CA certificates - when: ansible_os_family == 'Debian' + when: ansible_pkg_mgr == 'apt' apt: name: ca-certificates state: present diff --git a/tasks/tls_cert_OpenBSD.yml b/tasks/tls_cert_OpenBSD.yml index 8cdcb84433f83cf31919d6021caa22e06f15b336..e2b568190c3263f067e231ce07843d63765e0bea 100644 --- a/tasks/tls_cert_OpenBSD.yml +++ b/tasks/tls_cert_OpenBSD.yml @@ -17,43 +17,52 @@ mode: '{{ item.mode }}' state: directory +- name: Get current CA store + get_url: + url: http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/lib/libcrypto/cert.pem + dest: /etc/ssl/certs/ca-certificates.pem + owner: root + group: wheel + mode: '0644' + +- name: Copy update-ca-certifcates script + copy: + src: update-ca-certificates + dest: /usr/local/sbin/update-ca-certificates + owner: root + group: wheel + mode: '0755' + - stat: path: /etc/ssl/private/ssl-cert-snakeoil.key register: tls_stat_key - name: Generate self-signed TLS key - when: not tls_stat_key.exists - command: /usr/sbin/openssl genrsa -out /etc/ssl/private/ssl-cert-snakeoil.key 2048 + when: not tls_stat_key.stat.exists + command: /usr/bin/openssl genrsa -out /etc/ssl/private/ssl-cert-snakeoil.key 2048 - stat: - path: /etc/ssl/certs/ssl-cert-snakeoil.crt + path: /etc/ssl/certs/ssl-cert-snakeoil.pem register: tls_stat_cert - name: Generate self-signed TLS cert - when: not tls_stat_cert.exists + when: not tls_stat_cert.stat.exists command: | - /usr/sbin/openssl req \ + /usr/bin/openssl req \ -x509 \ -new \ - -key /etc/ssl/private/snakeoil.key \ + -key /etc/ssl/private/ssl-cert-snakeoil.key \ -nodes \ - -out /etc/ssl/certs/snakeoil.crt \ + -out /etc/ssl/certs/ssl-cert-snakeoil.pem \ -days 3650 -subj "/CN={{ ansible_fqdn }}" register: tls_gen_snakeoil_cert -- name: Add self-signed TLS cert to certificate store - when: not tls_stat_cert.exists - command: | - /usr/sbin/openssl x509 \ - -in /etc/ssl/certs/ssl-snake-oil.crt \ - -text >> /etc/ssl/cert.pem - - name: Set TLS key and certificate set_fact: tls_key_path: '/etc/ssl/private/{{ tls_key|default("ssl-cert-snakeoil")|basename }}.key' - tls_cert_path: '/etc/ssl/certs/{{ tls_cert|default("ssl-cert-snakeoil")|basename }}.crt' - tls_ca_cert_path: '/etc/ssl/certs/{{ tls_ca_cert|default(tls_cert|default("ssl-cert-snakeoil"))|basename }}.crt' + tls_cert_path: '/etc/ssl/certs/{{ tls_cert|default("ssl-cert-snakeoil")|basename }}.pem' + tls_ca_cert_path: '/etc/ssl/certs/{{ tls_ca_cert|default(tls_cert|default("ssl-cert-snakeoil"))|basename }}.pem' - name: Copy TLS certificate and key when: tls_cert is defined and tls_key is defined and tls_ca_cert is defined @@ -73,11 +82,4 @@ register: tls_copy - name: Update certificate authority store - when: tls_copy.changed - with_items: - - '{{ tls_cert_path }}' - - '{{ tls_ca_cert_path }}' - command: | - /usr/sbin/openssl x509 \ - -in {{ item }} \ - -text >> /etc/ssl/cert.pem + command: /usr/local/sbin/update-ca-certificates diff --git a/vars/main.yml b/vars/main.yml index 1b3dc60257c564e9642901012ac1308571ea16c6..a89cf1af9038aaa9155f482466c104e5c0d125cc 100644 --- a/vars/main.yml +++ b/vars/main.yml @@ -32,3 +32,10 @@ openbsd_collectd_version: '5.8': 'collectd-5.5.0p1' openbsd_pkg_mirror: http://www.mirrorservice.org/pub +ansible_python_interpreter: '{{ "/usr/local/bin/python2.7" if openbsd_bootstrap is defined else omit }}' +update_ca_certificates: + OpenBSD: /usr/local/sbin/update-ca-certificates + Debian: /usr/sbin/update-ca-certificates +ca_store: + OpenBSD: /etc/ssl/cert.pem + Debian: /etc/ssl/certs/ca-certificates.crt