Skip to content

Commit 5f2e787

Browse files
committed
setup script aligned with docker-compose.yml and Dockerfile/entrypoint.sh
Dockerfile cleanup: removed trust-manager TO-DO: WebID delegation
1 parent 9847bf4 commit 5f2e787

File tree

11 files changed

+153
-229
lines changed

11 files changed

+153
-229
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@
77
/node
88
/node_modules
99
/docker-compose.override.yml
10-
/public-keys
10+
/ssl

Dockerfile

+8-26
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,6 @@ RUN mkdir /jena && \
1010
curl -SL "$JENA_TAR_URL" | \
1111
tar -xzf - -C /jena
1212

13-
# copy trust manager source code
14-
15-
WORKDIR /usr/src/trust-manager
16-
17-
COPY platform/trust-manager /usr/src/trust-manager
18-
19-
# build trust manager
20-
21-
RUN mvn clean install # builds target/trust-manager-1.0.0-SNAPSHOT.jar
22-
2313
# copy platform source code and POM
2414

2515
WORKDIR /usr/src/platform
@@ -52,10 +42,6 @@ COPY platform/server.xsl conf/server.xsl
5242

5343
COPY platform/context.xsl conf/context.xsl
5444

55-
# copy trust manager from the maven stage of the build
56-
57-
COPY --from=maven /usr/src/trust-manager/target/trust-manager-1.0.0-SNAPSHOT.jar lib/ldh-trust-manager.jar
58-
5945
ENV CACHE_MODEL_LOADS=true
6046

6147
ENV STYLESHEET=static/com/atomgraph/linkeddatahub/xsl/bootstrap/2.3.2/layout.xsl
@@ -74,25 +60,21 @@ ENV HOST=localhost
7460

7561
ENV ABS_PATH=/
7662

77-
# ENV HTTP_PROXY_PORT=80
78-
7963
ENV HTTP_REDIRECT_PORT=443
8064

8165
ENV HTTP_COMPRESSION=on
8266

83-
ENV SECRETARY_REL_URI=admin/acl/agents/e413f97b-15ee-47ea-ba65-4479aa7f1f9e/#this
84-
85-
ENV SECRETARY_KEY_PASSWORD=LinkedDataHub
67+
ENV SERVER_CERT=/var/linkeddatahub/ssl/server/server.crt
8668

87-
ENV SECRETARY_CERT_ALIAS=ldh
69+
ENV SECRETARY_CERT="$CATALINA_HOME/webapps/ROOT/ssl/cert.pem"
8870

89-
ENV SECRETARY_CERT_VALIDITY=36500
71+
ENV SECRETARY_CERT_ALIAS=secretary
9072

91-
ENV CLIENT_KEYSTORE="$CATALINA_HOME/webapps/ROOT/certs/secretary.p12"
73+
ENV CLIENT_KEYSTORE="$CATALINA_HOME/webapps/ROOT/ssl/keystore.p12"
9274

93-
ENV CLIENT_TRUSTSTORE="$CATALINA_HOME/webapps/ROOT/certs/secretary.truststore"
75+
ENV CLIENT_TRUSTSTORE="$CATALINA_HOME/webapps/ROOT/ssl/client.truststore"
9476

95-
ENV OWNER_PUBLIC_KEY="/var/linkeddatahub/public-keys/owner.pem"
77+
ENV OWNER_PUBLIC_KEY=/var/linkeddatahub/ssl/owner/public.pem
9678

9779
ENV LOAD_DATASETS=
9880

@@ -166,8 +148,8 @@ ENV JENA_HOME=/jena
166148

167149
ENV PATH="${PATH}:${JENA_HOME}/bin"
168150

169-
# persist certificates in a volume
151+
# persist SSL-related files in a volume
170152

171-
VOLUME /var/linkeddatahub/certs "$CATALINA_HOME/webapps/ROOT/certs"
153+
VOLUME /var/linkeddatahub/ssl "$CATALINA_HOME/webapps/ROOT/ssl"
172154

173155
ENTRYPOINT ["/bin/sh", "entrypoint.sh"]

docker-compose.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,9 @@ services:
5050
# - GOOGLE_CLIENT_ID=
5151
# - GOOGLE_CLIENT_SECRET=
5252
volumes:
53-
- ./certs:/usr/local/tomcat/webapps/ROOT/certs
54-
- ./public-keys/owner.pem:/var/linkeddatahub/public-keys/owner.pem
53+
- ./ssl/server:/var/linkeddatahub/ssl/server
54+
- ./ssl/owner:/var/linkeddatahub/ssl/owner
55+
- ./ssl/secretary:/usr/local/tomcat/webapps/ROOT/ssl
5556
- ./uploads:/var/www/linkeddatahub/uploads
5657
- ./config/dev.log4j.properties:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/log4j.properties:ro
5758
- ./config/system-varnish.trig:/var/linkeddatahub/datasets/system.trig:ro

http-tests/setup-test-user.sh

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
./setup.sh https://localhost:4443/ /tmp/test-user.p12 changeit 'CN=Test Agent, OU=LinkedDataHub (localhost), O=AtomGraph, L=Copenhagen, ST=Denmark, C=DK' /tmp/test-user.pem 3650

http-tests/setup.sh

+88-35
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,119 @@
11
#!/bin/bash
22

3-
if [ "$#" -ne 6 ]; then
4-
echo "Usage: $0" '$env_file $alias $owner_cert $owner_cert_pwd $owner_public_key $validity' >&2
5-
echo "Example: $0 .env martynas martynas.localhost.p12 Password martynas.localhost.pem 3650" >&2
3+
if [ "$#" -ne 4 ]; then
4+
echo "Usage: $0" '$env_file $out_folder $owner_cert_pwd $validity' >&2
5+
echo "Example: $0 .env ssl Password 3650" >&2
66
exit 1
77
fi
88

99
env_file="$1"
10+
out_folder="$2"
1011

11-
alias="$2"
12-
owner_cert="$3"
13-
owner_cert_pwd="$4"
14-
owner_public_key="$5"
15-
validity="$6"
12+
owner_alias="owner"
13+
owner_keystore="${out_folder}/owner/keystore.p12"
14+
owner_cert_pwd="$3"
15+
owner_public_key="${out_folder}/owner/public.pem"
16+
validity="$4"
1617

17-
secretary_keystore="ssl/secretary/keystore.p12"
18+
secretary_alias="secretary"
19+
secretary_keystore="${out_folder}/secretary/keystore.p12"
1820
secretary_keystore_pwd="LinkedDataHub"
19-
secretary_cert="ssl/secretary/cert.pem"
21+
secretary_cert="${out_folder}/secretary/cert.pem"
2022
secretary_cert_pwd="LinkedDataHub"
21-
secretary_cert_validity=36500
22-
23-
mkdir -p ssl/secretary
2423

2524
declare -A env
2625

2726
# read file line by line and populate the array. Field separator is "="
2827
while IFS='=' read -r k v; do
29-
if [ ! -z $k ] ; then env["$k"]="$v"; fi
28+
if [ -n "$k" ] ; then env["$k"]="$v"; fi
3029
done < "$env_file"
3130

32-
for x in "${!env[@]}"; do printf "[%s]=%s\n" "$x" "${env[$x]}" ; done
31+
if [ -z "${env['PROTOCOL']}" ]; then
32+
echo "Configuration is incomplete: PROTOCOL is missing"
33+
exit 1
34+
fi
35+
if [ -z "${env['HTTPS_PORT']}" ]; then
36+
echo "Configuration is incomplete: HTTPS_PORT is missing"
37+
exit 1
38+
fi
39+
if [ -z "${env['HTTP_PORT']}" ]; then
40+
echo "Configuration is incomplete: HTTP_PORT is missing"
41+
exit 1
42+
fi
43+
if [ -z "${env['HOST']}" ]; then
44+
echo "Configuration is incomplete: HOST is missing"
45+
exit 1
46+
fi
47+
if [ -z "${env['ABS_PATH']}" ]; then
48+
echo "Configuration is incomplete: ABS_PATH is missing"
49+
exit 1
50+
fi
3351

3452
if [ "${env['PROTOCOL']}" = "https" ]; then
3553
if [ "${env['HTTPS_PORT']}" = 443 ]; then
36-
export base_uri="${env['PROTOCOL']}://${env['HOST']}${env['ABS_PATH']}"
54+
base_uri="${env['PROTOCOL']}://${env['HOST']}${env['ABS_PATH']}"
3755
else
38-
export base_uri="${env['PROTOCOL']}://${env['HOST']}:${env['HTTPS_PORT']}${env['ABS_PATH']}"
56+
base_uri="${env['PROTOCOL']}://${env['HOST']}:${env['HTTPS_PORT']}${env['ABS_PATH']}"
3957
fi
4058
else
4159
if [ "${env['HTTP_PORT']}" = 80 ]; then
42-
export base_uri="${env['PROTOCOL']}://${env['HOST']}${env['ABS_PATH']}"
60+
base_uri="${env['PROTOCOL']}://${env['HOST']}${env['ABS_PATH']}"
4361
else
44-
export base_uri="${env['PROTOCOL']}://${env['HOST']}:${env['HTTP_PORT']}${env['ABS_PATH']}"
62+
base_uri="${env['PROTOCOL']}://${env['HOST']}:${env['HTTP_PORT']}${env['ABS_PATH']}"
4563
fi
4664
fi
4765

48-
printf "\n ### Base URI: %s\n" "$base_uri"
66+
printf "### Base URI: %s\n" "$base_uri"
4967

5068
# create owner certificate
5169

70+
printf "\n### Owner's WebID URI: %s\n" "$owner_uri"
71+
72+
if [ -z "${env['OWNER_GIVEN_NAME']}" ]; then
73+
echo "Configuration is incomplete: OWNER_GIVEN_NAME is missing"
74+
exit 1
75+
fi
76+
if [ -z "${env['OWNER_FAMILY_NAME']}" ]; then
77+
echo "Configuration is incomplete: OWNER_FAMILY_NAME is missing"
78+
exit 1
79+
fi
80+
if [ -z "${env['OWNER_ORG_UNIT']}" ]; then
81+
echo "Configuration is incomplete: OWNER_ORG_UNIT is missing"
82+
exit 1
83+
fi
84+
if [ -z "${env['OWNER_ORGANIZATION']}" ]; then
85+
echo "Configuration is incomplete: OWNER_ORGANIZATION is missing"
86+
exit 1
87+
fi
88+
if [ -z "${env['OWNER_LOCALITY']}" ]; then
89+
echo "Configuration is incomplete: OWNER_LOCALITY is missing"
90+
exit 1
91+
fi
92+
if [ -z "${env['OWNER_STATE_OR_PROVINCE']}" ]; then
93+
echo "Configuration is incomplete: OWNER_STATE_OR_PROVINCE is missing"
94+
exit 1
95+
fi
96+
if [ -z "${env['OWNER_COUNTRY_NAME']}" ]; then
97+
echo "Configuration is incomplete: OWNER_COUNTRY_NAME is missing"
98+
exit 1
99+
fi
100+
52101
owner_uuid=$(uuidgen | tr '[:upper:]' '[:lower:]') # lowercase
53102
owner_uri="${base_uri}admin/acl/agents/${owner_uuid}/#this"
54103

55104
printf "\n### Owner's WebID URI: %s\n" "$owner_uri"
56105

57106
owner_cert_dname="CN=${env['OWNER_GIVEN_NAME']} ${env['OWNER_FAMILY_NAME']}, OU=${env['OWNER_ORG_UNIT']}, O=${env['OWNER_ORGANIZATION']}, L=${env['OWNER_LOCALITY']}, ST=${env['OWNER_STATE_OR_PROVINCE']}, C=${env['OWNER_COUNTRY_NAME']}"
107+
printf "\n### Owner WebID certificate's DName attributes: %s\n" "$owner_cert_dname"
108+
109+
mkdir -p "$out_folder"/owner
58110

59111
keytool \
60-
-alias "$alias" \
61112
-genkeypair \
113+
-alias "$owner_alias" \
62114
-keyalg RSA \
63115
-storetype PKCS12 \
64-
-keystore "$owner_cert" \
116+
-keystore "$owner_keystore" \
65117
-storepass "$owner_cert_pwd" \
66118
-keypass "$owner_cert_pwd" \
67119
-dname "$owner_cert_dname" \
@@ -70,30 +122,36 @@ keytool \
70122

71123
# convert owner's certificate to PEM
72124

73-
openssl pkcs12 -in "$owner_cert" -passin pass:"$owner_cert_pwd" -nokeys -out "$owner_public_key" # only export the public key!
125+
openssl \
126+
pkcs12 \
127+
-in "$owner_keystore" \
128+
-passin pass:"$owner_cert_pwd" \
129+
-nokeys \
130+
-out "$owner_public_key"
74131

75132
# create secratary's certificate
76133

134+
mkdir -p "$out_folder"/secretary
135+
77136
secretary_uuid=$(uuidgen | tr '[:upper:]' '[:lower:]') # lowercase
78137
secretary_uri="${base_uri}admin/acl/agents/${secretary_uuid}/#this"
79138

80139
printf "\n### Secretary's WebID URI: %s\n" "$secretary_uri"
81140

82-
secretary_dname="CN=LDH, OU=LDH, O=AtomGraph, L=Copenhagen, ST=Denmark, C=DK"
141+
secretary_cert_dname="CN=LDH, OU=LDH, O=AtomGraph, L=Copenhagen, ST=Denmark, C=DK"
142+
printf "\n### Secretary WebID certificate's DName attributes: %s\n" "$secretary_cert_dname"
83143

84144
keytool \
85145
-genkeypair \
86-
-alias "ldh-secretary" \
146+
-alias "$secretary_alias" \
87147
-keyalg RSA \
88148
-storetype PKCS12 \
89149
-keystore "$secretary_keystore" \
90150
-storepass "$secretary_keystore_pwd" \
91151
-keypass "$secretary_cert_pwd" \
92-
-dname "$secretary_dname" \
152+
-dname "$secretary_cert_dname" \
93153
-ext "SAN=uri:${secretary_uri}" \
94-
-validity "$secretary_cert_validity"
95-
96-
printf "\n### Secretary WebID certificate's DName attributes: %s\n" "$secretary_dname"
154+
-validity "$validity"
97155

98156
# convert secretary's certificate to PEM
99157

@@ -102,9 +160,4 @@ openssl \
102160
-in "$secretary_keystore" \
103161
-passin pass:"$secretary_keystore_pwd" \
104162
-out "$secretary_cert" \
105-
-passout pass:"$secretary_cert_pwd"
106-
107-
# ===
108-
# openssl pkcs12 -in "$owner_cert" -out ./http-tests/owner.p12.pem -passin pass:"$owner_cert_pwd" -passout pass:"$owner_cert_pwd" # re-generate the owner PEM cert - seems to differ with different openssl versions?
109-
110-
# openssl pkcs12 -in ./certs/secretary.p12 -out ./http-tests/secretary.p12.pem -passin pass:"$secretary_cert_pwd" -passout pass:"$secretary_cert_pwd
163+
-passout pass:"$secretary_cert_pwd"

0 commit comments

Comments
 (0)