From 5d8bb45ef7565da91bc3296400d3f26443944695 Mon Sep 17 00:00:00 2001 From: Joel Parker Henderson Date: Mon, 24 Aug 2026 10:13:49 +0100 Subject: [PATCH] test: renew the expired server certificate, add a podman/docker test-server script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit docker/certs/server.crt expired on 2024-12-20. Every image built from docker/ since then has presented an expired certificate, so the TLS handshake fails and the whole server-dependent suite fails with Tls("connection closed via error") — which reads like a client bug rather than a stale fixture. Regenerated with the repository's own certs/generate-signed-cert.sh. The customCA is untouched and still valid until 2027-11-14; only the leaf is renewed, so nothing that trusts the CA needs updating. Also adds docker/test-server.sh, which builds, starts and waits for a server with either podman or docker: ./docker/test-server.sh up export TIBERIUS_TEST_CONNECTION_STRING='server=tcp:localhost,1433;user=SA;password=;IntegratedSecurity=true;TrustServerCertificate=true' cargo test It defaults to the azure-sql-edge image because the full SQL Server images are x86_64 only, so on arm64 they refuse to run or run under emulation. It polls the log for readiness rather than the port, because the port accepts connections well before the server answers. Verified: 390 tests pass against a server built by this script. --- docker/certs/customCA.srl | 2 +- docker/certs/server-full.crt | 54 ++++++------ docker/certs/server.crt | 54 ++++++------ docker/certs/server.key | 100 +++++++++++------------ docker/certs/server.pem | 154 +++++++++++++++++------------------ docker/test-server.sh | 86 +++++++++++++++++++ 6 files changed, 268 insertions(+), 182 deletions(-) create mode 100755 docker/test-server.sh diff --git a/docker/certs/customCA.srl b/docker/certs/customCA.srl index 618df7789..a02a6570a 100644 --- a/docker/certs/customCA.srl +++ b/docker/certs/customCA.srl @@ -1 +1 @@ -0DAEECC45C07F5E06E0DD1B05115C3CFD1A46D9C +0DAEECC45C07F5E06E0DD1B05115C3CFD1A46D9D diff --git a/docker/certs/server-full.crt b/docker/certs/server-full.crt index 31ceafd70..9efec35a1 100644 --- a/docker/certs/server-full.crt +++ b/docker/certs/server-full.crt @@ -1,33 +1,33 @@ -----BEGIN CERTIFICATE----- -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 -HTMZ5IJXU9f1XKtMHLdGRpx0YiEGTw0e +BQcDAjAdBgNVHQ4EFgQUnzQzJQgZ3FwsoBTapAF3dcYXGcowHwYDVR0jBBgwFoAU +RHcTzm1u6x8WiXeAWDblHzwBt9kwDQYJKoZIhvcNAQELBQADggIBAHw6aQxSKoaJ +hldmyDrRNNdXpGYhdIZKf4xfreVduFdY0wiDRq/4/OJCeVJFSQBoLS/htZBixiKl +11q8nuDIZEz2rPauNziU77tR7N7+qQlY3+1EGB/Yhmy/5nN9lL1nxB5KNOIjCzT9 +quuLGlUFolBhvu7UOISrEWpZbnY+1S0lk6KH8uHoSaSO/Rh0RieGol/O1uYI9e9f +yiopDl//4C+0PaSCo7WzICx+qlVLz8JY12A6wlHAJtKDV5O6Vg0ImM3XCo9Yza5i +beq1rxwYo8LgMXpUDP4g8Fm2vpwRyfu/sTYgcdJkyszx44ZsfROvVlbMgNaeTjBP +Morne9RTpi3v6txAeYC7MIe/A2YwZfr2CI0qu7An5rWS8MXWqj7ucZozhjcgHSaw +lxnKvh+vrQLcUYvoN577vGMSfBLaEVoYH8B168foaToZUJDQrz+D/Vn0vy+dBBlv +nXrHNFkv7zh2hlP2j2t51UW+6+Et/Mc7b+NRRtRh70KoKT2/6IhpNaeNR7S7wSPb +ttuZOskpk0/1wVNVQ2PR5hfCMl2SollX/1cm4Wr8KEffYZCpPHi3K+cQiP6NRFZD +Bx/j6bkHruc88UuCoWSOpk6FxUPcZ8Z8tCr07mPDBktPzWttkPEivYy6uWBGOpCM +259+bcC6OSD+wjTKbinYW5O6lgLgTN39 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIE/zCCAuegAwIBAgIUATFLyERaRfsQiPasMC5l0vrBMUMwDQYJKoZIhvcNAQEL diff --git a/docker/certs/server.crt b/docker/certs/server.crt index 95e4d43e4..217fa71d5 100644 --- a/docker/certs/server.crt +++ b/docker/certs/server.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- -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 -HTMZ5IJXU9f1XKtMHLdGRpx0YiEGTw0e +BQcDAjAdBgNVHQ4EFgQUnzQzJQgZ3FwsoBTapAF3dcYXGcowHwYDVR0jBBgwFoAU +RHcTzm1u6x8WiXeAWDblHzwBt9kwDQYJKoZIhvcNAQELBQADggIBAHw6aQxSKoaJ +hldmyDrRNNdXpGYhdIZKf4xfreVduFdY0wiDRq/4/OJCeVJFSQBoLS/htZBixiKl +11q8nuDIZEz2rPauNziU77tR7N7+qQlY3+1EGB/Yhmy/5nN9lL1nxB5KNOIjCzT9 +quuLGlUFolBhvu7UOISrEWpZbnY+1S0lk6KH8uHoSaSO/Rh0RieGol/O1uYI9e9f +yiopDl//4C+0PaSCo7WzICx+qlVLz8JY12A6wlHAJtKDV5O6Vg0ImM3XCo9Yza5i +beq1rxwYo8LgMXpUDP4g8Fm2vpwRyfu/sTYgcdJkyszx44ZsfROvVlbMgNaeTjBP +Morne9RTpi3v6txAeYC7MIe/A2YwZfr2CI0qu7An5rWS8MXWqj7ucZozhjcgHSaw +lxnKvh+vrQLcUYvoN577vGMSfBLaEVoYH8B168foaToZUJDQrz+D/Vn0vy+dBBlv +nXrHNFkv7zh2hlP2j2t51UW+6+Et/Mc7b+NRRtRh70KoKT2/6IhpNaeNR7S7wSPb +ttuZOskpk0/1wVNVQ2PR5hfCMl2SollX/1cm4Wr8KEffYZCpPHi3K+cQiP6NRFZD +Bx/j6bkHruc88UuCoWSOpk6FxUPcZ8Z8tCr07mPDBktPzWttkPEivYy6uWBGOpCM +259+bcC6OSD+wjTKbinYW5O6lgLgTN39 -----END CERTIFICATE----- diff --git a/docker/certs/server.key b/docker/certs/server.key index 7e60bb02e..aeeb9c493 100644 --- a/docker/certs/server.key +++ b/docker/certs/server.key @@ -1,52 +1,52 @@ -----BEGIN PRIVATE KEY----- -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 -Oeu1HE+LelnM2vOc9TtbJC9FrC8nYw== +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 +kSmCekhourBuNNB1mNXD+PKwrpWd -----END PRIVATE KEY----- diff --git a/docker/certs/server.pem b/docker/certs/server.pem index 7acbb192f..3edee6059 100644 --- a/docker/certs/server.pem +++ b/docker/certs/server.pem @@ -1,83 +1,83 @@ -----BEGIN PRIVATE KEY----- -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 -Oeu1HE+LelnM2vOc9TtbJC9FrC8nYw== +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 +kSmCekhourBuNNB1mNXD+PKwrpWd -----END PRIVATE KEY----- -----BEGIN CERTIFICATE----- -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 -HTMZ5IJXU9f1XKtMHLdGRpx0YiEGTw0e +BQcDAjAdBgNVHQ4EFgQUnzQzJQgZ3FwsoBTapAF3dcYXGcowHwYDVR0jBBgwFoAU +RHcTzm1u6x8WiXeAWDblHzwBt9kwDQYJKoZIhvcNAQELBQADggIBAHw6aQxSKoaJ +hldmyDrRNNdXpGYhdIZKf4xfreVduFdY0wiDRq/4/OJCeVJFSQBoLS/htZBixiKl +11q8nuDIZEz2rPauNziU77tR7N7+qQlY3+1EGB/Yhmy/5nN9lL1nxB5KNOIjCzT9 +quuLGlUFolBhvu7UOISrEWpZbnY+1S0lk6KH8uHoSaSO/Rh0RieGol/O1uYI9e9f +yiopDl//4C+0PaSCo7WzICx+qlVLz8JY12A6wlHAJtKDV5O6Vg0ImM3XCo9Yza5i +beq1rxwYo8LgMXpUDP4g8Fm2vpwRyfu/sTYgcdJkyszx44ZsfROvVlbMgNaeTjBP +Morne9RTpi3v6txAeYC7MIe/A2YwZfr2CI0qu7An5rWS8MXWqj7ucZozhjcgHSaw +lxnKvh+vrQLcUYvoN577vGMSfBLaEVoYH8B168foaToZUJDQrz+D/Vn0vy+dBBlv +nXrHNFkv7zh2hlP2j2t51UW+6+Et/Mc7b+NRRtRh70KoKT2/6IhpNaeNR7S7wSPb +ttuZOskpk0/1wVNVQ2PR5hfCMl2SollX/1cm4Wr8KEffYZCpPHi3K+cQiP6NRFZD +Bx/j6bkHruc88UuCoWSOpk6FxUPcZ8Z8tCr07mPDBktPzWttkPEivYy6uWBGOpCM +259+bcC6OSD+wjTKbinYW5O6lgLgTN39 -----END CERTIFICATE----- diff --git a/docker/test-server.sh b/docker/test-server.sh new file mode 100755 index 000000000..a0239280c --- /dev/null +++ b/docker/test-server.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash +# +# Start a SQL Server for the test suite, with podman or docker. +# +# ./docker/test-server.sh up # build, start, wait until it accepts connections +# ./docker/test-server.sh down # stop and remove +# ./docker/test-server.sh logs # follow the server log +# +# Then: +# +# export TIBERIUS_TEST_CONNECTION_STRING='server=tcp:localhost,1433;user=SA;password=;IntegratedSecurity=true;TrustServerCertificate=true' +# cargo test +# +# IMAGE selects the flavour; the default works on both x86_64 and arm64. +# The full SQL Server images are x86_64 only, so on an arm64 machine +# (Apple silicon) they either refuse to run or run under emulation. + +set -euo pipefail + +ENGINE="${ENGINE:-$(command -v podman >/dev/null 2>&1 && echo podman || echo docker)}" +NAME="${NAME:-tiberius-test-mssql}" +PORT="${PORT:-1433}" +IMAGE="${IMAGE:-azure-sql-edge}" +PASSWORD='' +HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +case "${1:-up}" in + up) + echo "engine: $ENGINE image: $IMAGE port: $PORT" + "$ENGINE" build -q -f "$HERE/docker-$IMAGE.dockerfile" -t "$NAME:local" "$HERE" + "$ENGINE" rm -f "$NAME" >/dev/null 2>&1 || true + "$ENGINE" run -d --name "$NAME" \ + -e ACCEPT_EULA=Y \ + -e "MSSQL_SA_PASSWORD=$PASSWORD" \ + -e "SA_PASSWORD=$PASSWORD" \ + -p "$PORT:1433" \ + "$NAME:local" >/dev/null + + # The port opens well before the server will answer, so poll the log + # rather than the socket. + # + # The log is captured into a variable and matched there, rather than + # piped into `grep -q`. Under `set -o pipefail`, `grep -q` exits on the + # first match, the writer upstream dies of SIGPIPE, and the pipeline + # reports failure even though the match succeeded — so the wait never + # ends. + echo -n "waiting for SQL Server" + for _ in $(seq 1 120); do + logs="$("$ENGINE" logs "$NAME" 2>&1 || true)" + + case "$logs" in + *"SQL Server is now ready for client connections"*) + echo " — ready" + exit 0 + ;; + esac + + running="$("$ENGINE" ps --format '{{.Names}}' || true)" + case "$running" in + *"$NAME"*) ;; + *) + echo " — container exited:" + "$ENGINE" logs --tail 30 "$NAME" || true + exit 1 + ;; + esac + + echo -n . + sleep 2 + done + echo " — gave up; last lines:" + "$ENGINE" logs --tail 30 "$NAME" + exit 1 + ;; + down) + "$ENGINE" rm -f "$NAME" >/dev/null 2>&1 || true + echo "removed $NAME" + ;; + logs) + "$ENGINE" logs -f "$NAME" + ;; + *) + echo "usage: $0 {up|down|logs}" >&2 + exit 2 + ;; +esac