1
1
#! /usr/bin/env bash
2
2
# This script handles the generation of the TLS certificates.
3
- # The output is 2 files:
4
- # 1. /certs/${FACILITY:-onprem}/server-key.pem (TLS private key)
5
- # 2. /certs/${FACILITY:-onprem}/bundle.pem (TLS public certificate)
3
+ # The output is 4 files:
4
+ # 1. /certs/${FACILITY:-onprem}/ca-crt.pem (CA TLS public certificate)
5
+ # 2. /certs/${FACILITY:-onprem}/server-crt.pem (server TLS certificate)
6
+ # 3. /certs/${FACILITY:-onprem}/server-key.pem (server TLS private key)
7
+ # 4. /certs/${FACILITY:-onprem}/bundle.pem (server TLS certificate; backward compat)
6
8
7
9
set -xo pipefail
8
10
@@ -18,32 +20,40 @@ cleanup() {
18
20
rm -rf ca-key.pem ca.csr ca.pem server.csr server.pem
19
21
}
20
22
21
- # gen will generate the key and bundle
23
+ # gen will generate the key and certificate
22
24
gen () {
23
- local bundle_destination=" $1 "
24
- local key_destination=" $2 "
25
+ local ca_crt_destination=" $1 "
26
+ local server_crt_destination=" $2 "
27
+ local server_key_destination=" $3 "
25
28
cfssl gencert -initca /code/tls/csr.json | cfssljson -bare ca -
26
29
cfssl gencert -config /code/tls/ca-config.json -ca ca.pem -ca-key ca-key.pem -profile server /code/tls/csr.json | cfssljson -bare server
27
- cat server.pem ca.pem > " ${bundle_destination} "
28
- mv server-key.pem " ${key_destination} "
30
+ mv ca.pem " ${ca_crt_destination} "
31
+ mv server.pem " ${server_crt_destination} "
32
+ mv server-key.pem " ${server_key_destination} "
29
33
}
30
34
31
35
# main orchestrates the process
32
36
main () {
33
37
local sans_ip=" $1 "
34
38
local csr_file=" /code/tls/csr.json"
35
- local bundle_file=" /certs/${FACILITY:- onprem} /bundle.pem"
39
+ local ca_crt_file=" /certs/${FACILITY:- onprem} /ca-crt.pem"
40
+ local server_crt_file=" /certs/${FACILITY:- onprem} /server-crt.pem"
36
41
local server_key_file=" /certs/${FACILITY:- onprem} /server-key.pem"
42
+ # NB this is required for backward compat.
43
+ # TODO once the other think-* services use server-crt.pem this should
44
+ # be removed.
45
+ local bundle_crt_file=" /certs/${FACILITY:- onprem} /bundle.pem"
37
46
38
47
if ! grep -q " ${sans_ip} " " ${csr_file} " ; then
39
48
update_csr " ${sans_ip} " " ${csr_file} "
40
49
else
41
50
echo " IP ${sans_ip} already in ${csr_file} "
42
51
fi
43
- if [ ! -f " ${bundle_file} " ] && [ ! -f " ${server_key_file} " ]; then
44
- gen " ${bundle_file} " " ${server_key_file} "
52
+ if [ ! -f " ${ca_crt_file} " ] && [ ! -f " ${server_crt_file} " ] && [ ! -f " ${server_key_file} " ]; then
53
+ gen " ${ca_crt_file} " " ${server_crt_file} " " ${server_key_file} "
54
+ cp " ${server_crt_file} " " ${bundle_crt_file} "
45
55
else
46
- echo " Files [${bundle_file } , ${server_key_file} ] already exist"
56
+ echo " Files [${ca_crt_file} , ${server_crt_file } , ${server_key_file} ] already exist"
47
57
fi
48
58
cleanup
49
59
}
0 commit comments