1 # Copyright (C) The Arvados Authors. All rights reserved.
3 # SPDX-License-Identifier: Apache-2.0
5 {%- set curr_tpldir = tpldir %}
6 {%- set tpldir = 'arvados' %}
7 {%- from "arvados/map.jinja" import arvados with context %}
8 {%- set tpldir = curr_tpldir %}
15 {%- set arvados_ca_cert_file = '/etc/ssl/certs/arvados-snakeoil-ca.pem' %}
16 {%- set arvados_ca_key_file = '/etc/ssl/private/arvados-snakeoil-ca.key' %}
17 {%- set arvados_cert_file = '/etc/ssl/certs/arvados-snakeoil-cert.pem' %}
18 {%- set arvados_csr_file = '/etc/ssl/private/arvados-snakeoil-cert.csr' %}
19 {%- set arvados_key_file = '/etc/ssl/private/arvados-snakeoil-cert.key' %}
21 {%- if grains.get('os_family') == 'Debian' %}
22 {%- set arvados_ca_cert_dest = '/usr/local/share/ca-certificates/arvados-snakeoil-ca.crt' %}
23 {%- set update_ca_cert = '/usr/sbin/update-ca-certificates' %}
24 {%- set openssl_conf = '/etc/ssl/openssl.cnf' %}
26 {%- set arvados_ca_cert_dest = '/etc/pki/ca-trust/source/anchors/arvados-snakeoil-ca.pem' %}
27 {%- set update_ca_cert = '/usr/bin/update-ca-trust' %}
28 {%- set openssl_conf = '/etc/pki/tls/openssl.cnf' %}
31 arvados_test_salt_states_examples_single_host_snakeoil_certs_dependencies_pkg_installed:
37 arvados_test_salt_states_examples_single_host_snakeoil_certs_arvados_snake_oil_ca_cmd_run:
38 # Taken from https://github.com/arvados/arvados/blob/master/tools/arvbox/lib/arvbox/docker/service/certificate/run
41 # These dirs are not to CentOS-ish, but this is a helper script
42 # and they should be enough
43 mkdir -p /etc/ssl/certs/ /etc/ssl/private/ && \
49 -subj "/C=CC/ST=Some State/O=Arvados Formula/OU=arvados-formula/CN=snakeoil-ca-{{ arvados.cluster.name }}.{{ arvados.cluster.domain }}" \
50 -extensions x509_ext \
51 -config <(cat {{ openssl_conf }} \
52 <(printf "\n[x509_ext]\nbasicConstraints=critical,CA:true,pathlen:0\nkeyUsage=critical,keyCertSign,cRLSign")) \
53 -out {{ arvados_ca_cert_file }} \
54 -keyout {{ arvados_ca_key_file }} \
56 cp {{ arvados_ca_cert_file }} {{ arvados_ca_cert_dest }} && \
59 - test -f {{ arvados_ca_cert_file }}
60 - openssl verify -CAfile {{ arvados_ca_cert_file }} {{ arvados_ca_cert_file }}
62 - pkg: arvados_test_salt_states_examples_single_host_snakeoil_certs_dependencies_pkg_installed
64 arvados_test_salt_states_examples_single_host_snakeoil_certs_arvados_snake_oil_cert_cmd_run:
67 cat > /tmp/openssl.cnf <<-CNF
73 distinguished_name = dn
80 CN = {{ arvados.cluster.name }}.{{ arvados.cluster.domain }}
81 emailAddress = admin@{{ arvados.cluster.name }}.{{ arvados.cluster.domain }}
83 subjectAltName = @alt_names
85 {%- for entry in grains.get('ipv4') %}
86 IP.{{ loop.index }} = {{ entry }}
97 DNS.{{ loop.index }} = {{ entry }}.{{ arvados.cluster.name }}.{{ arvados.cluster.domain }}
99 DNS.7 = {{ arvados.cluster.name }}.{{ arvados.cluster.domain }}
104 -config /tmp/openssl.cnf \
108 -out {{ arvados_csr_file }} \
109 -keyout {{ arvados_key_file }} > /tmp/snake_oil_certs.output 2>&1 && \
114 -in {{ arvados_csr_file }} \
115 -out {{ arvados_cert_file }} \
116 -extfile /tmp/openssl.cnf \
118 -CA {{ arvados_ca_cert_file }} \
119 -CAkey {{ arvados_ca_key_file }} \
120 -set_serial $(date +%s) && \
121 chmod 0644 {{ arvados_cert_file }} && \
122 chmod 0640 {{ arvados_key_file }}
124 - test -f {{ arvados_key_file }}
125 - openssl verify -CAfile {{ arvados_ca_cert_file }} {{ arvados_cert_file }}
127 - pkg: arvados_test_salt_states_examples_single_host_snakeoil_certs_dependencies_pkg_installed
128 - cmd: arvados_test_salt_states_examples_single_host_snakeoil_certs_arvados_snake_oil_ca_cmd_run
130 {%- if grains.get('os_family') == 'Debian' %}
131 arvados_test_salt_states_examples_single_host_snakeoil_certs_ssl_cert_pkg_installed:
137 arvados_test_salt_states_examples_single_host_snakeoil_certs_certs_permissions_cmd_run:
139 - name: {{ arvados_key_file }}
143 - cmd: arvados_test_salt_states_examples_single_host_snakeoil_certs_arvados_snake_oil_cert_cmd_run
144 - pkg: arvados_test_salt_states_examples_single_host_snakeoil_certs_ssl_cert_pkg_installed
147 arvados_test_salt_states_examples_single_host_snakeoil_certs_nginx_snakeoil_file_managed:
149 - name: /etc/nginx/snippets/arvados-snakeoil.conf
151 ssl_certificate {{ arvados_cert_file }};
152 ssl_certificate_key {{ arvados_key_file }};
154 - service: nginx_service
156 - pkg: passenger_install
157 - file: arvados_test_salt_states_examples_single_host_snakeoil_certs_certs_permissions_cmd_run