Skip to content

Commit 57ab575

Browse files
committed
pg-cdc test: Fix certificate test
Follow-up to MaterializeInc#35487 Causing test failures in main, see for example: https://buildkite.com/materialize/test/builds/119386#019d2eee-d56c-4bd2-8d5e-409525b0a147 pg-cdc-ssl-ca-bundle.td:38:1: executing query failed: db error: ERROR: error performing TLS handshake: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:2091:: self-signed certificate in certificate chain: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:2091:: error:0A000086:SSL routines:tls_post_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:2091:
1 parent 81f1cc1 commit 57ab575

File tree

4 files changed

+130
-11
lines changed

4 files changed

+130
-11
lines changed

test/test-certs/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ MZFROM ubuntu-base
1111

1212
RUN apt-get update && TZ=UTC DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-11-jdk openssl && apt-get clean && rm -rf /var/lib/apt/lists/*
1313

14-
COPY create-certs.sh /
14+
COPY create-certs.sh ca.key ca-selective.key /
1515

1616
RUN ./create-certs.sh
1717

test/test-certs/ca-selective.key

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
-----BEGIN ENCRYPTED PRIVATE KEY-----
2+
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
54+
-----END ENCRYPTED PRIVATE KEY-----

test/test-certs/ca.key

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
-----BEGIN ENCRYPTED PRIVATE KEY-----
2+
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
54+
-----END ENCRYPTED PRIVATE KEY-----

test/test-certs/create-certs.sh

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,31 +53,42 @@ export SSL_SECRET=mzmzmz
5353

5454
mkdir secrets
5555

56-
# Create CA
56+
# Use pre-committed CA keys to ensure deterministic builds.
57+
#
58+
# The mzbuild fingerprint is derived from file contents (Dockerfile,
59+
# create-certs.sh, etc.) but NOT from build outputs. Since openssl generates
60+
# random keys, rebuilding the test-certs image with the same fingerprint
61+
# produces different CA certificates. Dependent images like postgres (which
62+
# bake in certs at build time) may not be rebuilt, causing a CA mismatch:
63+
# the test provides the new CA cert but postgres still serves a cert signed
64+
# by the old CA.
65+
#
66+
# Fixing the CA private keys makes rebuilds safe: every build produces
67+
# certificates verifiable by the same CA key pair.
68+
cp /ca.key secrets/ca.key
69+
cp /ca-selective.key secrets/ca-selective.key
70+
71+
# Create CA cert from the fixed key
5772
openssl req \
5873
-x509 \
5974
-days 36500 \
60-
-newkey rsa:4096 \
61-
-keyout secrets/ca.key \
75+
-key secrets/ca.key \
6276
-out secrets/ca.crt \
6377
-sha256 \
6478
-batch \
6579
-subj "/CN=MZ RSA CA" \
66-
-passin pass:$SSL_SECRET \
67-
-passout pass:$SSL_SECRET
80+
-passin pass:$SSL_SECRET
6881

69-
# Create an alternative CA, used for certain tests
82+
# Create an alternative CA cert from the fixed key, used for certain tests
7083
openssl req \
7184
-x509 \
7285
-days 36500 \
73-
-newkey rsa:4096 \
74-
-keyout secrets/ca-selective.key \
86+
-key secrets/ca-selective.key \
7587
-out secrets/ca-selective.crt \
7688
-sha256 \
7789
-batch \
7890
-subj "/CN=MZ RSA CA" \
79-
-passin pass:$SSL_SECRET \
80-
-passout pass:$SSL_SECRET
91+
-passin pass:$SSL_SECRET
8192

8293
# create_cert CLIENT-NAME CA-NAME COMMON-NAME
8394
create_cert() {

0 commit comments

Comments
 (0)