Skip to content
Snippets Groups Projects
Commit a91af3f7 authored by Martin van Es's avatar Martin van Es
Browse files

Deploy signer certificate from local deploy host

parent 945ac893
No related branches found
No related tags found
1 merge request!1Martin
files/*.crt
files/*.key
inventory/group_vars/geodns.yml inventory/group_vars/geodns.yml
inventory/group_vars/mdsigner.yml inventory/group_vars/mdsigner.yml
.ssh/id_* .ssh/id_*
File deleted
Download GeoLite2 DB's from https://dev.maxmind.com/geoip/geolite2-free-geolocation-data This directory should contain:
* GeoDNS config in yaml format
* mdsigner signing certificates (key_spec/cert_spec)
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
tld: srv.mdx.incubator.geant.org tld: srv.mdx.incubator.geant.org
hosts: proxies:
et2: et2:
hostname: srv1 hostname: srv1
altname: 'server-md2.et2.com' altname: 'server-md2.et2.com'
......
--- ---
hosts: signers_tld: srv.mdx.incubator.geant.org
signers:
et2: et2:
hostname: srv1
mdsigner: mdsigner:
test: test:
signer: name: hsm_signer
name: hsm_signer key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
metadir: metadata/test
mdxcdn: mdxcdn:
hostname: srv2
mdsigner: mdsigner:
edugain: edugain:
signer: name: hsm_signer
name: hsm_signer key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
metadir: metadata/edugain
alternative-mdx: alternative-mdx:
hostname: srv3
mdsigner: mdsigner:
test:
name: normal_signer
key_spec: "test.key"
cert_spec: "test.crt"
foobar: foobar:
signer: name: hsm_signer
name: normal_signer key_spec: pkcs11:///usr/lib/softhsm/libsofthsm2.so/test?pin=secret
key_spec: "meta.key"
cert_spec: "meta.crt"
metadir: metadata/test
{% if hosts[inventory_hostname].get('mdsigner') %} {% if signers is defined and signers[inventory_hostname].get('mdsigner') %}
<VirtualHost *:80> <VirtualHost *:80>
ServerName {{ hosts[inventory_hostname]['hostname'] }}-signer.{{ tld }} ServerName {{ signers[inventory_hostname]['hostname'] }}-signer.{{ signers_tld }}
{% if hosts[inventory_hostname].get('altname') %} {% if signers[inventory_hostname].get('altname') %}
ServerAlias {{ hosts[inventory_hostname]['altname'] }} ServerAlias {{ signers[inventory_hostname]['altname'] }}
{% endif %} {% endif %}
DocumentRoot /var/www/html DocumentRoot /var/www/html
AllowEncodedSlashes NoDecode AllowEncodedSlashes NoDecode
...@@ -11,16 +11,16 @@ ...@@ -11,16 +11,16 @@
</VirtualHost> </VirtualHost>
{% endif %} {% endif %}
{% if hosts[inventory_hostname].get('mdproxy') %} {% if proxies is defined and proxies[inventory_hostname].get('mdproxy') %}
<VirtualHost *:80> <VirtualHost *:80>
ServerName {{ hosts[inventory_hostname]['hostname'] }}-proxy.{{ tld }} ServerName {{ proxies[inventory_hostname]['hostname'] }}-proxy.{{ tld }}
DocumentRoot /var/www/html DocumentRoot /var/www/html
AllowEncodedSlashes NoDecode AllowEncodedSlashes NoDecode
ProxyPass "/" "http://127.0.0.1:5002/" nocanon ProxyPass "/" "http://127.0.0.1:5002/" nocanon
ProxyPassReverse "/" "http://127.0.0.1:5002/" ProxyPassReverse "/" "http://127.0.0.1:5002/"
</VirtualHost> </VirtualHost>
{% set mdproxy = hosts[inventory_hostname]['mdproxy'] %} {% set mdproxy = proxies[inventory_hostname]['mdproxy'] %}
{% for realm, values in mdproxy.items() %} {% for realm, values in mdproxy.items() %}
<VirtualHost *:80> <VirtualHost *:80>
ServerName proxy-{{ realm }}.{{ tld }} ServerName proxy-{{ realm }}.{{ tld }}
...@@ -34,3 +34,4 @@ ...@@ -34,3 +34,4 @@
</VirtualHost> </VirtualHost>
{% endfor %} {% endfor %}
{% endif %} {% endif %}
--- ---
{{ hosts[inventory_hostname]['mdproxy'] | tojson }} {% set mdproxies = proxies[inventory_hostname]['mdproxy'] %}
{% for realm, values in mdproxies.items() %}
{{ realm }}:
signer: {{ values['signer'] }}
{% if values.get('altname') %}
altname: {{ values['altname'] }}
{% endif %}
{% endfor %}
- name: check wheter we can copy certificates
ansible.builtin.stat:
path: "{{ playbook_dir }}/files/{{ item.value.key_spec }}"
delegate_to: localhost
become: no
register: key_spec
- name: Copy certificates when key_spec exists
block:
- name: Copy Key spec
ansible.builtin.copy:
src: "{{ item.value.key_spec }}"
dest: "{{ altmdx_dir }}/{{ item.value.key_spec }}"
- name: Copy Cert spec
ansible.builtin.copy:
src: "{{ item.value.cert_spec }}"
dest: "{{ altmdx_dir }}/{{ item.value.cert_spec }}"
when: key_spec.stat.exists
...@@ -22,22 +22,11 @@ ...@@ -22,22 +22,11 @@
path: "{{ altmdx_metadir }}/{{ item.key }}" path: "{{ altmdx_metadir }}/{{ item.key }}"
state: directory state: directory
mode: '0755' mode: '0755'
with_dict: "{{ hosts[inventory_hostname]['mdsigner'] }}" with_dict: "{{ signers[inventory_hostname]['mdsigner'] }}"
- name: Check existence of metadata signing cert - name: Copy certificates
stat: include_tasks: certificates.yml
path: "{{ altmdx_metadir }}/meta.crt" loop: "{{ signers[inventory_hostname]['mdsigner'] | dict2items }}"
register: mdcert
- name: create self-signed Metadata Signing SSL certs
shell: >
openssl genrsa -out "{{ altmdx_dir }}/meta.key" 2048;
openssl req -new -nodes -x509 -subj "/C=NL/CN=metadata"
-days 3650 -key "{{ altmdx_dir }}/meta.key"
-out "{{ altmdx_dir }}/meta.crt" -extensions v3_ca
args:
creates: "{{ altmdx_dir }}/meta.crt"
when: not mdcert.stat.exists
- name: Copy mdsigner service files - name: Copy mdsigner service files
ansible.builtin.template: ansible.builtin.template:
......
--- ---
{{ hosts[inventory_hostname]['mdsigner'] | to_yaml }} {% set mdsigners = signers[inventory_hostname]['mdsigner'] %}
{% for realm, values in mdsigners.items() %}
{{ realm }}:
signer:
name: {{ values['name'] }}
key_spec: {{ values.key_spec }}
cert_spec: {{ values.get('cert_spec') }}
metadir: metadata/{{ realm }}
{% endfor %}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment