From 49479baa9f08018571ae5d3ae88ffdeee1d38d44 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Tue, 14 Oct 2025 23:01:01 +0200 Subject: [PATCH] tests: fix ssl generation the "integration-dind-ssl" tests were failing due to an issue with the test-certs created; ==================================== ERRORS ==================================== _________ ERROR at setup of BuildTest.test_build_container_with_target _________ /usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py:464: in _make_request self._validate_conn(conn) /usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py:1093: in _validate_conn conn.connect() /usr/local/lib/python3.12/site-packages/urllib3/connection.py:790: in connect sock_and_verified = _ssl_wrap_socket_and_match_hostname( /usr/local/lib/python3.12/site-packages/urllib3/connection.py:969: in _ssl_wrap_socket_and_match_hostname ssl_sock = ssl_wrap_socket( /usr/local/lib/python3.12/site-packages/urllib3/util/ssl_.py:480: in ssl_wrap_socket ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) /usr/local/lib/python3.12/site-packages/urllib3/util/ssl_.py:524: in _ssl_wrap_socket_impl return ssl_context.wrap_socket(sock, server_hostname=server_hostname) /usr/local/lib/python3.12/ssl.py:455: in wrap_socket return self.sslsocket_class._create( /usr/local/lib/python3.12/ssl.py:1041: in _create self.do_handshake() /usr/local/lib/python3.12/ssl.py:1319: in do_handshake self._sslobj.do_handshake() E ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: invalid CA certificate (_ssl.c:1010) During handling of the above exception, another exception occurred: /usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py:787: in urlopen response = self._make_request( /usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py:488: in _make_request raise new_e E urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: invalid CA certificate (_ssl.c:1010) Signed-off-by: Sebastiaan van Stijn --- tests/Dockerfile-dind-certs | 43 +++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/tests/Dockerfile-dind-certs b/tests/Dockerfile-dind-certs index 7b819eb154..9d5c58fb2d 100644 --- a/tests/Dockerfile-dind-certs +++ b/tests/Dockerfile-dind-certs @@ -7,17 +7,46 @@ RUN mkdir /tmp/certs VOLUME /certs WORKDIR /tmp/certs + +# ---- CA (with proper v3_ca) ---- RUN openssl genrsa -aes256 -passout pass:foobar -out ca-key.pem 4096 -RUN echo "[req]\nprompt=no\ndistinguished_name = req_distinguished_name\n[req_distinguished_name]\ncountryName=AU" > /tmp/config -RUN openssl req -new -x509 -passin pass:foobar -config /tmp/config -days 365 -key ca-key.pem -sha256 -out ca.pem -RUN openssl genrsa -out server-key.pem -passout pass:foobar 4096 +COPY <<'EOF' /tmp/ca.cnf +[req] +prompt = no +distinguished_name = req_distinguished_name +x509_extensions = v3_ca + +[req_distinguished_name] +countryName = AU + +[v3_ca] +basicConstraints = critical, CA:TRUE +keyUsage = critical, keyCertSign, cRLSign +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer +EOF +RUN openssl req -new -x509 -passin pass:foobar -config /tmp/ca.cnf -days 365 -key ca-key.pem -sha256 -out ca.pem + +# ---- Server cert (SAN + KU/EKU) ---- +RUN openssl genrsa -out server-key.pem 4096 RUN openssl req -subj "/CN=docker" -sha256 -new -key server-key.pem -out server.csr -RUN echo subjectAltName = DNS:docker,DNS:localhost > extfile.cnf -RUN openssl x509 -req -days 365 -passin pass:foobar -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf +COPY <<'EOF' /tmp/server-ext.cnf +basicConstraints = CA:FALSE +keyUsage = critical, digitalSignature, keyEncipherment +extendedKeyUsage = serverAuth +subjectAltName = DNS:docker, DNS:localhost +EOF +RUN openssl x509 -req -days 365 -passin pass:foobar -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile /tmp/server-ext.cnf + +# ---- Client cert (KU/EKU) ---- RUN openssl genrsa -out key.pem 4096 RUN openssl req -passin pass:foobar -subj '/CN=client' -new -key key.pem -out client.csr -RUN echo extendedKeyUsage = clientAuth > extfile.cnf -RUN openssl x509 -req -passin pass:foobar -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf +COPY <<'EOF' /tmp/client-ext.cnf +basicConstraints = CA:FALSE +keyUsage = critical, digitalSignature +extendedKeyUsage = clientAuth +EOF +RUN openssl x509 -req -passin pass:foobar -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile /tmp/client-ext.cnf RUN chmod -v 0400 ca-key.pem key.pem server-key.pem RUN chmod -v 0444 ca.pem server-cert.pem cert.pem