1
1
#! /bin/bash
2
2
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
6
6
exit 1
7
7
fi
8
8
9
9
env_file=" $1 "
10
+ out_folder=" $2 "
10
11
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 "
16
17
17
- secretary_keystore=" ssl/secretary/keystore.p12"
18
+ secretary_alias=" secretary"
19
+ secretary_keystore=" ${out_folder} /secretary/keystore.p12"
18
20
secretary_keystore_pwd=" LinkedDataHub"
19
- secretary_cert=" ssl /secretary/cert.pem"
21
+ secretary_cert=" ${out_folder} /secretary/cert.pem"
20
22
secretary_cert_pwd=" LinkedDataHub"
21
- secretary_cert_validity=36500
22
-
23
- mkdir -p ssl/secretary
24
23
25
24
declare -A env
26
25
27
26
# read file line by line and populate the array. Field separator is "="
28
27
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
30
29
done < " $env_file "
31
30
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
33
51
34
52
if [ " ${env['PROTOCOL']} " = " https" ]; then
35
53
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']} "
37
55
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']} "
39
57
fi
40
58
else
41
59
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']} "
43
61
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']} "
45
63
fi
46
64
fi
47
65
48
- printf " \n ### Base URI: %s\n" " $base_uri "
66
+ printf " ### Base URI: %s\n" " $base_uri "
49
67
50
68
# create owner certificate
51
69
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
+
52
101
owner_uuid=$( uuidgen | tr ' [:upper:]' ' [:lower:]' ) # lowercase
53
102
owner_uri=" ${base_uri} admin/acl/agents/${owner_uuid} /#this"
54
103
55
104
printf " \n### Owner's WebID URI: %s\n" " $owner_uri "
56
105
57
106
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
58
110
59
111
keytool \
60
- -alias " $alias " \
61
112
-genkeypair \
113
+ -alias " $owner_alias " \
62
114
-keyalg RSA \
63
115
-storetype PKCS12 \
64
- -keystore " $owner_cert " \
116
+ -keystore " $owner_keystore " \
65
117
-storepass " $owner_cert_pwd " \
66
118
-keypass " $owner_cert_pwd " \
67
119
-dname " $owner_cert_dname " \
@@ -70,30 +122,36 @@ keytool \
70
122
71
123
# convert owner's certificate to PEM
72
124
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 "
74
131
75
132
# create secratary's certificate
76
133
134
+ mkdir -p " $out_folder " /secretary
135
+
77
136
secretary_uuid=$( uuidgen | tr ' [:upper:]' ' [:lower:]' ) # lowercase
78
137
secretary_uri=" ${base_uri} admin/acl/agents/${secretary_uuid} /#this"
79
138
80
139
printf " \n### Secretary's WebID URI: %s\n" " $secretary_uri "
81
140
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 "
83
143
84
144
keytool \
85
145
-genkeypair \
86
- -alias " ldh-secretary " \
146
+ -alias " $secretary_alias " \
87
147
-keyalg RSA \
88
148
-storetype PKCS12 \
89
149
-keystore " $secretary_keystore " \
90
150
-storepass " $secretary_keystore_pwd " \
91
151
-keypass " $secretary_cert_pwd " \
92
- -dname " $secretary_dname " \
152
+ -dname " $secretary_cert_dname " \
93
153
-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 "
97
155
98
156
# convert secretary's certificate to PEM
99
157
@@ -102,9 +160,4 @@ openssl \
102
160
-in " $secretary_keystore " \
103
161
-passin pass:" $secretary_keystore_pwd " \
104
162
-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