Skip to content

Commit bfc4349

Browse files
committed
remove the CA certificate from the server certificate bundle
a server certificate must not include its CA certificate. the CA certificate must already be installed/trusted by the clients. Signed-off-by: Rui Lopes <[email protected]>
1 parent e3f8d28 commit bfc4349

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

deploy/compose/docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ services:
217217
REGISTRY_AUTH: htpasswd
218218
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
219219
REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd
220-
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/${FACILITY:-onprem}/bundle.pem
220+
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/${FACILITY:-onprem}/server-crt.pem
221221
REGISTRY_HTTP_TLS_KEY: /certs/${FACILITY:-onprem}/server-key.pem
222222
REGISTRY_HTTP_ADDR: $TINKERBELL_HOST_IP:443
223223
volumes:

deploy/compose/tls/generate.sh

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#!/usr/bin/env bash
22
# 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)
68

79
set -xo pipefail
810

@@ -18,32 +20,40 @@ cleanup() {
1820
rm -rf ca-key.pem ca.csr ca.pem server.csr server.pem
1921
}
2022

21-
# gen will generate the key and bundle
23+
# gen will generate the key and certificate
2224
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"
2528
cfssl gencert -initca /code/tls/csr.json | cfssljson -bare ca -
2629
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}"
2933
}
3034

3135
# main orchestrates the process
3236
main() {
3337
local sans_ip="$1"
3438
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"
3641
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"
3746

3847
if ! grep -q "${sans_ip}" "${csr_file}"; then
3948
update_csr "${sans_ip}" "${csr_file}"
4049
else
4150
echo "IP ${sans_ip} already in ${csr_file}"
4251
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}"
4555
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"
4757
fi
4858
cleanup
4959
}

0 commit comments

Comments
 (0)