Skip to content

Commit 1ea530d

Browse files
committed
test: Fix certificate being not trusted on MacOS
1 parent 123b271 commit 1ea530d

File tree

10 files changed

+56
-143
lines changed

10 files changed

+56
-143
lines changed

Diff for: .config/starte2e.sh

+9-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ export PATH="${PATH}:/usr/bin"
1010
touch tests/environment/zitadel/service-user.json
1111
chmod a+rw tests/environment/zitadel/service-user.json
1212

13+
# We only take down ldap if the cert are too old and need regeneration
14+
ldap_down=""
15+
file_creation=$(date -r ./tests/environment/certs/ca.crt +%s || echo 0)
16+
if [ $(( $(date +%s) - $file_creation )) -gt 2160000 ]; # 25 days old?
17+
then
18+
ldap_down="-v ldap"
19+
fi
20+
1321
# Shut down any still running test-setup first
14-
docker compose --project-directory ./tests/environment down -v test-setup || true
22+
docker compose --project-directory ./tests/environment down -v test-setup $ldap_down || true
1523
docker compose --project-directory ./tests/environment up --wait

Diff for: .gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,6 @@
22
/target
33
/tests/environment/zitadel/service-user.json
44
/tests/environment/config.yaml
5+
/tests/environment/certs/*.crt
6+
/tests/environment/certs/*.key
7+
.DS_Store

Diff for: Cargo.lock

-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: tests/environment/certs/ca.crt

-20
This file was deleted.

Diff for: tests/environment/certs/client.crt

-19
This file was deleted.

Diff for: tests/environment/certs/client.key

-28
This file was deleted.

Diff for: tests/environment/certs/generate-certs.sh

+33-17
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,36 @@
11
#!/bin/sh
22
set -eux
33

4-
openssl req -x509 -new -nodes -sha256 -newkey rsa:2048 \
5-
-keyout server.key \
6-
-out server.crt \
7-
-subj "/C=DE/CN=example.org" \
8-
-addext "subjectAltName = DNS:zitadel, DNS:localhost"
9-
10-
# These keys are not actually secret, and when passed into the docker
11-
# container the server key needs to be readable by the container user
12-
chmod go+r server.key
13-
14-
openssl x509 -outform pem -in server.crt -out ca.crt
15-
openssl req -x509 -nodes -days 3650 -sha256 -newkey rsa:2048 \
16-
-CAkey server.key \
17-
-CA ca.crt \
18-
-keyout client.key \
19-
-out client.crt \
20-
-subj "/CN=admin.example.org"
4+
script_dir=$(dirname $0)
5+
6+
file_creation=$(date -r $script_dir/ca.crt +%s || echo 0)
7+
8+
if [ $(( $(date +%s) - $file_creation )) -gt 2160000 ]; # 25 days old?
9+
then
10+
11+
# We need to set EKUs (extendedKeyUsage) otherwise MacOS won't trust
12+
# the certificate
13+
openssl req -x509 -new -nodes -sha256 -newkey rsa:2048 \
14+
-keyout $script_dir/server.key \
15+
-out $script_dir/server.crt \
16+
-subj "/C=DE/CN=example.org" \
17+
-addext "subjectAltName = DNS:zitadel, DNS:localhost" \
18+
-addext "extendedKeyUsage = serverAuth, clientAuth"
19+
20+
# These keys are not actually secret, and when passed into the docker
21+
# container the server key needs to be readable by the container user
22+
chmod go+r $script_dir/server.key
23+
24+
openssl x509 -outform pem -in $script_dir/server.crt -out $script_dir/ca.crt
25+
openssl req -x509 -nodes -days 3650 -sha256 -newkey rsa:2048 \
26+
-CAkey $script_dir/server.key \
27+
-CA $script_dir/ca.crt \
28+
-keyout $script_dir/client.key \
29+
-out $script_dir/client.crt \
30+
-subj "/CN=admin.example.org"
31+
32+
chmod a+r $script_dir/client.key
33+
chmod a+r $script_dir/client.crt
34+
chmod a+r $script_dir/server.crt
35+
36+
fi

Diff for: tests/environment/certs/server.crt

-20
This file was deleted.

Diff for: tests/environment/certs/server.key

-28
This file was deleted.

Diff for: tests/environment/docker-compose.yaml

+11
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
services:
2+
certs:
3+
image: alpine/openssl:3.3.2
4+
volumes:
5+
- type: bind
6+
source: ./certs
7+
target: /certs
8+
entrypoint: /certs/generate-certs.sh
9+
210
ldap:
311
image: bitnami/openldap:2.5.18
412
ports:
@@ -15,6 +23,9 @@ services:
1523
source: ./certs
1624
target: /certs
1725
read_only: true
26+
depends_on:
27+
certs:
28+
condition: 'service_completed_successfully'
1829

1930
test-setup:
2031
image: famedly/famedly-sync-testenv

0 commit comments

Comments
 (0)