Commit 33a900145cba25066632d0bb4f8cbf977392269b
1 parent
84698ad5
Lwm2m: back: created sh with many certX509
Showing
5 changed files
with
719 additions
and
85 deletions
1 | -#!/bin/sh | |
1 | +#!/bin/bash | |
2 | 2 | # |
3 | 3 | # Copyright © 2016-2020 The Thingsboard Authors |
4 | 4 | # |
... | ... | @@ -15,12 +15,147 @@ |
15 | 15 | # limitations under the License. |
16 | 16 | # |
17 | 17 | |
18 | -# source the properties: | |
18 | +#p) CLIENT_CN=LwX50900000000 | |
19 | +#s) client_start=0 | |
20 | +#f) client_finish=1 | |
21 | +#a) CLIENT_ALIAS=client_alias_00000000 | |
22 | +#b) BOOTSTRAP_ALIAS=bootstrap | |
23 | +#d) SERVER_ALIAS=server | |
24 | +#j) SERVER_STORE=serverKeyStore.jks | |
25 | +#k) CLIENT_STORE=clientKeyStore.jks | |
26 | +#c) CLIENT_STORE_PWD=client_ks_password | |
27 | +#w) SERVER_STORE_PWD=server_ks_password | |
28 | + | |
29 | +#while test $# -gt 0; do | |
30 | +# case "$1" in | |
31 | +# -h|--help) | |
32 | +# echo "$package - attempt to capture frames" | |
33 | +# echo " " | |
34 | +# echo "$package [options] application [arguments]" | |
35 | +# echo " " | |
36 | +# echo "options:" | |
37 | +# echo "-h, --help show brief help" | |
38 | +# echo "-a, --action=ACTION specify an action to use" | |
39 | +# echo "-o, --output-dir=DIR specify a directory to store output in" | |
40 | +# exit 0 | |
41 | +# ;; | |
42 | +# -a) | |
43 | +# shift | |
44 | +# if test $# -gt 0; then | |
45 | +# export PROCESS=$1 | |
46 | +# else | |
47 | +# echo "no process specified" | |
48 | +# exit 1 | |
49 | +# fi | |
50 | +# shift | |
51 | +# ;; | |
52 | +# --action*) | |
53 | +# export PROCESS=`echo $1 | sed -e 's/^[^=]*=//g'` | |
54 | +# shift | |
55 | +# ;; | |
56 | +# -o) | |
57 | +# shift | |
58 | +# if test $# -gt 0; then | |
59 | +# export OUTPUT=$1 | |
60 | +# else | |
61 | +# echo "no output dir specified" | |
62 | +# exit 1 | |
63 | +# fi | |
64 | +# shift | |
65 | +# ;; | |
66 | +# --output-dir*) | |
67 | +# export OUTPUT=`echo $1 | sed -e 's/^[^=]*=//g'` | |
68 | +# shift | |
69 | +# ;; | |
70 | +# *) | |
71 | +# break | |
72 | +# ;; | |
73 | +# esac | |
74 | +#done | |
75 | + | |
76 | + | |
77 | +while getopts p:s:f:a:b:d:j:k:c:w: flag; do | |
78 | + case "${flag}" in | |
79 | + p) client_prefix=${OPTARG} ;; | |
80 | + s) client_start=${OPTARG} ;; | |
81 | + f) client_finish=${OPTARG} ;; | |
82 | + a) client_alias=${OPTARG} ;; | |
83 | + b) bootstrap_alias=${OPTARG} ;; | |
84 | + d) server_alias=${OPTARG} ;; | |
85 | + j) key_store_server_file=${OPTARG} ;; | |
86 | + k) key_store_client_file=${OPTARG} ;; | |
87 | + c) client_key_store_pwd=${OPTARG} ;; | |
88 | + w) server_key_store_pwd=${OPTARG} ;; | |
89 | + esac | |
90 | +done | |
91 | + | |
92 | +# cd to dir of script | |
19 | 93 | script_dir=$(dirname $0) |
20 | 94 | echo "script_dir: $script_dir" |
21 | 95 | cd $script_dir |
96 | +# source the properties: | |
22 | 97 | . ./lwM2M_keygen.properties |
23 | 98 | |
99 | + | |
100 | +if [ -n "$client_prefix" ]; then | |
101 | + CLIENT_PREFIX=$client_prefix | |
102 | +fi | |
103 | + | |
104 | +if [ -z "$client_start" ]; then | |
105 | + client_start=0 | |
106 | +fi | |
107 | + | |
108 | +if [ -z "$client_finish" ]; then | |
109 | + client_finish=1 | |
110 | +fi | |
111 | + | |
112 | +if [ -n "$client_alias" ]; then | |
113 | + CLIENT_ALIAS=$client_alias | |
114 | +fi | |
115 | + | |
116 | +if [ -n "$bootstrap_alias" ]; then | |
117 | + BOOTSTRAP_ALIAS=$bootstrap_alias | |
118 | +fi | |
119 | + | |
120 | +if [ -n "$server_alias" ]; then | |
121 | + SERVER_ALIAS=$server_alias | |
122 | +fi | |
123 | + | |
124 | +if [ -n "$key_store_server_file" ]; then | |
125 | + SERVER_STORE=$key_store_server_file | |
126 | +fi | |
127 | + | |
128 | +if [ -n "$key_store_client_file" ]; then | |
129 | + CLIENT_STORE=$key_store_client_file | |
130 | +fi | |
131 | + | |
132 | +if [ -n "$client_key_store_pwd" ]; then | |
133 | + CLIENT_STORE_PWD=$client_key_store_pwd | |
134 | +fi | |
135 | + | |
136 | +if [ -n "$server_key_store_pwd" ]; then | |
137 | + SERVER_STORE_PWD=$server_key_store_pwd | |
138 | +fi | |
139 | + | |
140 | +echo "==Start==" | |
141 | +echo "CLIENT_PREFIX: $CLIENT_PREFIX" | |
142 | +echo "client_start: $client_start" | |
143 | +echo "client_finish: $client_finish" | |
144 | +echo "CLIENT_ALIAS: $CLIENT_ALIAS" | |
145 | +echo "BOOTSTRAP_ALIAS: $BOOTSTRAP_ALIAS" | |
146 | +echo "SERVER_ALIAS: $SERVER_ALIAS" | |
147 | +echo "SERVER_STORE: $SERVER_STORE" | |
148 | +echo "CLIENT_STORE: $CLIENT_STORE" | |
149 | +echo "CLIENT_STORE_PWD: $CLIENT_STORE_PWD" | |
150 | +echo "SERVER_STORE_PWD: $SERVER_STORE_PWD" | |
151 | + | |
152 | +end_point() { | |
153 | + echo "$CLIENT_PREFIX$(printf "%08d" $CLIENT_NUMBER)" | |
154 | +} | |
155 | +client_alias_point() { | |
156 | + echo "$CLIENT_ALIAS$(printf "%08d" $CLIENT_NUMBER)" | |
157 | +} | |
158 | + | |
24 | 159 | # Generation of the keystore. |
25 | 160 | echo "${H0}====START========${RESET}" |
26 | 161 | echo "${H1}Server Keystore : ${RESET}" |
... | ... | @@ -55,7 +190,7 @@ keytool \ |
55 | 190 | -exportcert \ |
56 | 191 | -alias $SERVER_ALIAS \ |
57 | 192 | -keystore $SERVER_STORE \ |
58 | - -storepass $SERVER_STORE_PWD | \ | |
193 | + -storepass $SERVER_STORE_PWD | | |
59 | 194 | keytool \ |
60 | 195 | -importcert \ |
61 | 196 | -alias $SERVER_SELF_ALIAS \ |
... | ... | @@ -70,22 +205,22 @@ keytool \ |
70 | 205 | -alias $SERVER_ALIAS \ |
71 | 206 | -dname "CN=$SERVER_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ |
72 | 207 | -keystore $SERVER_STORE \ |
73 | - -storepass $SERVER_STORE_PWD | \ | |
208 | + -storepass $SERVER_STORE_PWD | | |
74 | 209 | keytool \ |
75 | 210 | -gencert \ |
76 | 211 | -alias $ROOT_KEY_ALIAS \ |
77 | 212 | -keystore $SERVER_STORE \ |
78 | 213 | -storepass $SERVER_STORE_PWD \ |
79 | 214 | -storetype $STORETYPE \ |
80 | - -validity $VALIDITY | \ | |
81 | - keytool \ | |
82 | - -importcert \ | |
83 | - -alias $SERVER_ALIAS \ | |
84 | - -keystore $SERVER_STORE \ | |
85 | - -storepass $SERVER_STORE_PWD | |
215 | + -validity $VALIDITY | | |
216 | + keytool \ | |
217 | + -importcert \ | |
218 | + -alias $SERVER_ALIAS \ | |
219 | + -keystore $SERVER_STORE \ | |
220 | + -storepass $SERVER_STORE_PWD | |
86 | 221 | |
87 | 222 | echo |
88 | -echo "${H2}Creating server key and self-signed certificate ...${RESET}" | |
223 | +echo "${H2}Creating bootstrap key and self-signed certificate ...${RESET}" | |
89 | 224 | keytool \ |
90 | 225 | -genkeypair \ |
91 | 226 | -alias $BOOTSTRAP_ALIAS \ |
... | ... | @@ -100,7 +235,7 @@ keytool \ |
100 | 235 | -exportcert \ |
101 | 236 | -alias $BOOTSTRAP_ALIAS \ |
102 | 237 | -keystore $SERVER_STORE \ |
103 | - -storepass $SERVER_STORE_PWD | \ | |
238 | + -storepass $SERVER_STORE_PWD | | |
104 | 239 | keytool \ |
105 | 240 | -importcert \ |
106 | 241 | -alias $BOOTSTRAP_SELF_ALIAS \ |
... | ... | @@ -115,54 +250,53 @@ keytool \ |
115 | 250 | -alias $BOOTSTRAP_ALIAS \ |
116 | 251 | -dname "CN=$BOOTSTRAP_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ |
117 | 252 | -keystore $SERVER_STORE \ |
118 | - -storepass $SERVER_STORE_PWD | \ | |
253 | + -storepass $SERVER_STORE_PWD | | |
119 | 254 | keytool \ |
120 | 255 | -gencert \ |
121 | 256 | -alias $ROOT_KEY_ALIAS \ |
122 | 257 | -keystore $SERVER_STORE \ |
123 | 258 | -storepass $SERVER_STORE_PWD \ |
124 | 259 | -storetype $STORETYPE \ |
125 | - -validity $VALIDITY | \ | |
126 | - keytool \ | |
127 | - -importcert \ | |
128 | - -alias $BOOTSTRAP_ALIAS \ | |
129 | - -keystore $SERVER_STORE \ | |
130 | - -storepass $SERVER_STORE_PWD | |
131 | - | |
260 | + -validity $VALIDITY | | |
261 | + keytool \ | |
262 | + -importcert \ | |
263 | + -alias $BOOTSTRAP_ALIAS \ | |
264 | + -keystore $SERVER_STORE \ | |
265 | + -storepass $SERVER_STORE_PWD | |
132 | 266 | |
133 | 267 | echo |
134 | 268 | echo "${H1}Client Keystore : ${RESET}" |
135 | 269 | echo "${H1}==================${RESET}" |
136 | -echo "${H2}Creating client key and self-signed certificate with expected CN...${RESET}" | |
137 | -keytool \ | |
138 | - -genkeypair \ | |
139 | - -alias $CLIENT_ALIAS \ | |
140 | - -keyalg EC \ | |
141 | - -dname "CN=$CLIENT_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
142 | - -validity $VALIDITY \ | |
143 | - -storetype $STORETYPE \ | |
144 | - -keypass $CLIENT_STORE_PWD \ | |
145 | - -keystore $CLIENT_STORE \ | |
146 | - -storepass $CLIENT_STORE_PWD | |
147 | -keytool \ | |
148 | - -exportcert \ | |
149 | - -alias $CLIENT_ALIAS \ | |
150 | - -keystore $CLIENT_STORE \ | |
151 | - -storepass $CLIENT_STORE_PWD | \ | |
152 | - keytool \ | |
153 | - -importcert \ | |
154 | - -alias $CLIENT_SELF_ALIAS \ | |
155 | - -keystore $CLIENT_STORE \ | |
156 | - -storepass $CLIENT_STORE_PWD \ | |
157 | - -noprompt | |
270 | +#echo "${H2}Creating client key and self-signed certificate with expected CN...${RESET}" | |
271 | +#keytool \ | |
272 | +# -genkeypair \ | |
273 | +# -alias $CLIENT_ALIAS \ | |
274 | +# -keyalg EC \ | |
275 | +# -dname "CN=$CLIENT_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
276 | +# -validity $VALIDITY \ | |
277 | +# -storetype $STORETYPE \ | |
278 | +# -keypass $CLIENT_STORE_PWD \ | |
279 | +# -keystore $CLIENT_STORE \ | |
280 | +# -storepass $CLIENT_STORE_PWD | |
281 | +#keytool \ | |
282 | +# -exportcert \ | |
283 | +# -alias $CLIENT_ALIAS \ | |
284 | +# -keystore $CLIENT_STORE \ | |
285 | +# -storepass $CLIENT_STORE_PWD | \ | |
286 | +# keytool \ | |
287 | +# -importcert \ | |
288 | +# -alias $CLIENT_SELF_ALIAS \ | |
289 | +# -keystore $CLIENT_STORE \ | |
290 | +# -storepass $CLIENT_STORE_PWD \ | |
291 | +# -noprompt | |
158 | 292 | |
159 | 293 | echo |
160 | -echo "${H2}Import root certificate just to be able to import ned by root CA with expected CN...${RESET}" | |
294 | +echo "${H2}Import root certificate just to be able to import need by root CA with expected CN...${RESET}" | |
161 | 295 | keytool \ |
162 | 296 | -exportcert \ |
163 | 297 | -alias $ROOT_KEY_ALIAS \ |
164 | 298 | -keystore $SERVER_STORE \ |
165 | - -storepass $SERVER_STORE_PWD | \ | |
299 | + -storepass $SERVER_STORE_PWD | | |
166 | 300 | keytool \ |
167 | 301 | -importcert \ |
168 | 302 | -alias $ROOT_KEY_ALIAS \ |
... | ... | @@ -170,27 +304,85 @@ keytool \ |
170 | 304 | -storepass $CLIENT_STORE_PWD \ |
171 | 305 | -noprompt |
172 | 306 | |
173 | -echo | |
174 | -echo "${H2}Creating client certificate signed by root CA with expected CN...${RESET}" | |
175 | -keytool \ | |
176 | - -certreq \ | |
177 | - -alias $CLIENT_ALIAS \ | |
178 | - -dname "CN=$CLIENT_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
179 | - -keystore $CLIENT_STORE \ | |
180 | - -storepass $CLIENT_STORE_PWD | \ | |
307 | +#echo | |
308 | +#echo "${H2}Creating client certificate signed by root CA with expected CN...${RESET}" | |
309 | +#keytool \ | |
310 | +# -certreq \ | |
311 | +# -alias $CLIENT_ALIAS \ | |
312 | +# -dname "CN=$CLIENT_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
313 | +# -keystore $CLIENT_STORE \ | |
314 | +# -storepass $CLIENT_STORE_PWD | \ | |
315 | +# keytool \ | |
316 | +# -gencert \ | |
317 | +# -alias $ROOT_KEY_ALIAS \ | |
318 | +# -keystore $SERVER_STORE \ | |
319 | +# -storepass $SERVER_STORE_PWD \ | |
320 | +# -storetype $STORETYPE \ | |
321 | +# -validity $VALIDITY | \ | |
322 | +# keytool \ | |
323 | +# -importcert \ | |
324 | +# -alias $CLIENT_ALIAS \ | |
325 | +# -keystore $CLIENT_STORE \ | |
326 | +# -storepass $CLIENT_STORE_PWD \ | |
327 | +# -noprompt | |
328 | + | |
329 | +cert_end_point() { | |
330 | + echo "${H2}Creating client key and self-signed certificate with expected CN $CLIENT_SELF_CN ${RESET}" | |
181 | 331 | keytool \ |
182 | - -gencert \ | |
183 | - -alias $ROOT_KEY_ALIAS \ | |
184 | - -keystore $SERVER_STORE \ | |
185 | - -storepass $SERVER_STORE_PWD \ | |
332 | + -genkeypair \ | |
333 | + -alias $CLIENT_CN_ALIAS \ | |
334 | + -keyalg EC \ | |
335 | + -dname "CN=$CLIENT_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
336 | + -validity $VALIDITY \ | |
186 | 337 | -storetype $STORETYPE \ |
187 | - -validity $VALIDITY | \ | |
338 | + -keypass $CLIENT_STORE_PWD \ | |
339 | + -keystore $CLIENT_STORE \ | |
340 | + -storepass $CLIENT_STORE_PWD | |
341 | + keytool \ | |
342 | + -exportcert \ | |
343 | + -alias $CLIENT_CN_ALIAS \ | |
344 | + -keystore $CLIENT_STORE \ | |
345 | + -storepass $CLIENT_STORE_PWD | | |
346 | + keytool \ | |
347 | + -importcert \ | |
348 | + -alias $CLIENT_SELF_ALIAS \ | |
349 | + -keystore $CLIENT_STORE \ | |
350 | + -storepass $CLIENT_STORE_PWD \ | |
351 | + -noprompt | |
352 | + | |
353 | + echo | |
354 | + echo "${H2}Creating client certificate signed by root CA with expected $CLIENT_CN_NAME ${RESET}" | |
355 | + keytool \ | |
356 | + -certreq \ | |
357 | + -alias $CLIENT_CN_ALIAS \ | |
358 | + -dname "CN=$CLIENT_CN_NAME, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
359 | + -keystore $CLIENT_STORE \ | |
360 | + -storepass $CLIENT_STORE_PWD | | |
361 | + keytool \ | |
362 | + -gencert \ | |
363 | + -alias $ROOT_KEY_ALIAS \ | |
364 | + -keystore $SERVER_STORE \ | |
365 | + -storepass $SERVER_STORE_PWD \ | |
366 | + -storetype $STORETYPE \ | |
367 | + -validity $VALIDITY | | |
188 | 368 | keytool \ |
189 | 369 | -importcert \ |
190 | - -alias $CLIENT_ALIAS \ | |
370 | + -alias $CLIENT_CN_ALIAS \ | |
191 | 371 | -keystore $CLIENT_STORE \ |
192 | 372 | -storepass $CLIENT_STORE_PWD \ |
193 | 373 | -noprompt |
374 | +} | |
375 | + | |
376 | +while [ "$CLIENT_NUMBER" != "$client_finish" ]; do | |
377 | + CLIENT_CN_NAME=$(end_point) | |
378 | + CLIENT_CN_ALIAS=$(client_alias_point) | |
379 | + echo "$CLIENT_CN_NAME" | |
380 | + echo "$CLIENT_CN_ALIAS" | |
381 | + cert_end_point | |
382 | + CLIENT_NUMBER=$(($CLIENT_NUMBER + 1)) | |
383 | + echo "number $CLIENT_NUMBER" | |
384 | + echo "finish $client_finish" | |
385 | +done | |
194 | 386 | |
195 | 387 | echo |
196 | 388 | echo "${H0}!!! Warning ${H2}Migrate ${H1}${SERVER_STORE} ${H2}to ${H1}PKCS12 ${H2}which is an industry standard format..${RESET}" | ... | ... |
... | ... | @@ -17,7 +17,7 @@ |
17 | 17 | # Keystore common parameters |
18 | 18 | ROOT_KEY_ALIAS=rootCA |
19 | 19 | DOMAIN_SUFFIX="$(hostname)" |
20 | -ROOT_CN="$DOMAIN_SUFFIX rootCA" | |
20 | +ROOT_CN="$DOMAIN_SUFFIX $ROOT_KEY_ALIAS" | |
21 | 21 | ORGANIZATIONAL_UNIT=Thingsboard |
22 | 22 | ORGANIZATION=Thingsboard |
23 | 23 | CITY=SF |
... | ... | @@ -27,23 +27,22 @@ VALIDITY=36500 #days |
27 | 27 | STORETYPE="JKS" |
28 | 28 | |
29 | 29 | #Server |
30 | -SERVER_STORE=serverKeyStore.jks | |
31 | -SERVER_STORE_PWD=server_ks_password | |
32 | -SERVER_ALIAS=server | |
30 | +SERVER_STORE=serverKeyStore1.jks | |
31 | +SERVER_STORE_PWD=server_ks_password1 | |
32 | +SERVER_ALIAS=server1 | |
33 | 33 | SERVER_CN="$DOMAIN_SUFFIX server LwM2M signed by root CA" |
34 | 34 | SERVER_SELF_ALIAS=server_self_signed |
35 | 35 | SERVER_SELF_CN="$DOMAIN_SUFFIX server LwM2M self-signed" |
36 | -BOOTSTRAP_ALIAS=bootstrap | |
36 | +BOOTSTRAP_ALIAS=bootstrap1 | |
37 | 37 | BOOTSTRAP_CN="$DOMAIN_SUFFIX bootstrap server LwM2M signed by root CA" |
38 | 38 | BOOTSTRAP_SELF_ALIAS=bootstrap_self_signed |
39 | 39 | BOOTSTRAP_SELF_CN="$DOMAIN_SUFFIX bootstrap server LwM2M self-signed" |
40 | 40 | |
41 | 41 | # Client |
42 | -CLIENT_STORE=clientKeyStore.jks | |
43 | -CLIENT_STORE_PWD=client_ks_password | |
44 | -CLIENT_ALIAS=client | |
45 | -#CLIENT_CN=client_lwm2m_x509 | |
46 | -CLIENT_CN=LwX50900000000 | |
42 | +CLIENT_STORE=clientKeyStore1.jks | |
43 | +CLIENT_STORE_PWD=client_ks_password1 | |
44 | +CLIENT_ALIAS=client_alias_1 | |
45 | +CLIENT_PREFIX=LwX509_ | |
47 | 46 | CLIENT_SELF_ALIAS=client_self_signed |
48 | 47 | CLIENT_SELF_CN="$DOMAIN_SUFFIX client LwM2M self-signed" |
49 | 48 | ... | ... |
1 | +#!/bin/bash | |
2 | +# | |
3 | +# Copyright © 2016-2020 The Thingsboard Authors | |
4 | +# | |
5 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | +# you may not use this file except in compliance with the License. | |
7 | +# You may obtain a copy of the License at | |
8 | +# | |
9 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
10 | +# | |
11 | +# Unless required by applicable law or agreed to in writing, software | |
12 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
13 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | +# See the License for the specific language governing permissions and | |
15 | +# limitations under the License. | |
16 | +# | |
17 | + | |
18 | +#p) CLIENT_CN=LwX50900000000 | |
19 | +#s) client_start=0 | |
20 | +#f) client_finish=1 | |
21 | +#a) CLIENT_ALIAS=client_alias_00000000 | |
22 | +#b) BOOTSTRAP_ALIAS=bootstrap | |
23 | +#d) SERVER_ALIAS=server | |
24 | +#j) SERVER_STORE=serverKeyStore.jks | |
25 | +#k) CLIENT_STORE=clientKeyStore.jks | |
26 | +#c) CLIENT_STORE_PWD=client_ks_password | |
27 | +#w) SERVER_STORE_PWD=server_ks_password | |
28 | + | |
29 | +#while test $# -gt 0; do | |
30 | +# case "$1" in | |
31 | +# -h|--help) | |
32 | +# echo "$package - attempt to capture frames" | |
33 | +# echo " " | |
34 | +# echo "$package [options] application [arguments]" | |
35 | +# echo " " | |
36 | +# echo "options:" | |
37 | +# echo "-h, --help show brief help" | |
38 | +# echo "-a, --action=ACTION specify an action to use" | |
39 | +# echo "-o, --output-dir=DIR specify a directory to store output in" | |
40 | +# exit 0 | |
41 | +# ;; | |
42 | +# -a) | |
43 | +# shift | |
44 | +# if test $# -gt 0; then | |
45 | +# export PROCESS=$1 | |
46 | +# else | |
47 | +# echo "no process specified" | |
48 | +# exit 1 | |
49 | +# fi | |
50 | +# shift | |
51 | +# ;; | |
52 | +# --action*) | |
53 | +# export PROCESS=`echo $1 | sed -e 's/^[^=]*=//g'` | |
54 | +# shift | |
55 | +# ;; | |
56 | +# -o) | |
57 | +# shift | |
58 | +# if test $# -gt 0; then | |
59 | +# export OUTPUT=$1 | |
60 | +# else | |
61 | +# echo "no output dir specified" | |
62 | +# exit 1 | |
63 | +# fi | |
64 | +# shift | |
65 | +# ;; | |
66 | +# --output-dir*) | |
67 | +# export OUTPUT=`echo $1 | sed -e 's/^[^=]*=//g'` | |
68 | +# shift | |
69 | +# ;; | |
70 | +# *) | |
71 | +# break | |
72 | +# ;; | |
73 | +# esac | |
74 | +#done | |
75 | + | |
76 | + | |
77 | +while getopts p:s:f:a:b:d:j:k:c:w: flag; do | |
78 | + case "${flag}" in | |
79 | + p) client_prefix=${OPTARG} ;; | |
80 | + s) client_start=${OPTARG} ;; | |
81 | + f) client_finish=${OPTARG} ;; | |
82 | + a) client_alias=${OPTARG} ;; | |
83 | + b) bootstrap_alias=${OPTARG} ;; | |
84 | + d) server_alias=${OPTARG} ;; | |
85 | + j) key_store_server_file=${OPTARG} ;; | |
86 | + k) key_store_client_file=${OPTARG} ;; | |
87 | + c) client_key_store_pwd=${OPTARG} ;; | |
88 | + w) server_key_store_pwd=${OPTARG} ;; | |
89 | + esac | |
90 | +done | |
91 | + | |
92 | +# cd to dir of script | |
93 | +script_dir=$(dirname $0) | |
94 | +echo "script_dir: $script_dir" | |
95 | +cd $script_dir | |
96 | +# source the properties: | |
97 | +. ./lwM2M_keygen.properties | |
98 | + | |
99 | + | |
100 | +if [ -n "$client_prefix" ]; then | |
101 | + CLIENT_PREFIX=$client_prefix | |
102 | +fi | |
103 | + | |
104 | +if [ -z "$client_start" ]; then | |
105 | + client_start=0 | |
106 | +fi | |
107 | + | |
108 | +if [ -z "$client_finish" ]; then | |
109 | + client_finish=1 | |
110 | +fi | |
111 | + | |
112 | +if [ -n "$client_alias" ]; then | |
113 | + CLIENT_ALIAS=$client_alias | |
114 | +fi | |
115 | + | |
116 | +if [ -n "$bootstrap_alias" ]; then | |
117 | + BOOTSTRAP_ALIAS=$bootstrap_alias | |
118 | +fi | |
119 | + | |
120 | +if [ -n "$server_alias" ]; then | |
121 | + SERVER_ALIAS=$server_alias | |
122 | +fi | |
123 | + | |
124 | +if [ -n "$key_store_server_file" ]; then | |
125 | + SERVER_STORE=$key_store_server_file | |
126 | +fi | |
127 | + | |
128 | +if [ -n "$key_store_client_file" ]; then | |
129 | + CLIENT_STORE=$key_store_client_file | |
130 | +fi | |
131 | + | |
132 | +if [ -n "$client_key_store_pwd" ]; then | |
133 | + CLIENT_STORE_PWD=$client_key_store_pwd | |
134 | +fi | |
135 | + | |
136 | +if [ -n "$server_key_store_pwd" ]; then | |
137 | + SERVER_STORE_PWD=$server_key_store_pwd | |
138 | +fi | |
139 | + | |
140 | +echo "==Start==" | |
141 | +echo "CLIENT_PREFIX: $CLIENT_PREFIX" | |
142 | +echo "client_start: $client_start" | |
143 | +echo "client_finish: $client_finish" | |
144 | +echo "CLIENT_ALIAS: $CLIENT_ALIAS" | |
145 | +echo "BOOTSTRAP_ALIAS: $BOOTSTRAP_ALIAS" | |
146 | +echo "SERVER_ALIAS: $SERVER_ALIAS" | |
147 | +echo "SERVER_STORE: $SERVER_STORE" | |
148 | +echo "CLIENT_STORE: $CLIENT_STORE" | |
149 | +echo "CLIENT_STORE_PWD: $CLIENT_STORE_PWD" | |
150 | +echo "SERVER_STORE_PWD: $SERVER_STORE_PWD" | |
151 | + | |
152 | +end_point() { | |
153 | + echo "$CLIENT_PREFIX$(printf "%08d" $CLIENT_NUMBER)" | |
154 | +} | |
155 | +client_alias_point() { | |
156 | + echo "$CLIENT_ALIAS$(printf "%08d" $CLIENT_NUMBER)" | |
157 | +} | |
158 | + | |
159 | +# Generation of the keystore. | |
160 | +echo "${H0}====START========${RESET}" | |
161 | +echo "${H1}Server Keystore : ${RESET}" | |
162 | +echo "${H1}==================${RESET}" | |
163 | +echo "${H2}Creating the trusted root CA key and certificate...${RESET}" | |
164 | +# -keysize | |
165 | +# 1024 (when using -genkeypair) | |
166 | +keytool \ | |
167 | + -genkeypair \ | |
168 | + -alias $ROOT_KEY_ALIAS \ | |
169 | + -keyalg EC \ | |
170 | + -dname "CN=$ROOT_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
171 | + -validity $VALIDITY \ | |
172 | + -storetype $STORETYPE \ | |
173 | + -keypass $SERVER_STORE_PWD \ | |
174 | + -keystore $SERVER_STORE \ | |
175 | + -storepass $SERVER_STORE_PWD | |
176 | + | |
177 | +echo | |
178 | +echo "${H2}Creating server key and self-signed certificate ...${RESET}" | |
179 | +keytool \ | |
180 | + -genkeypair \ | |
181 | + -alias $SERVER_ALIAS \ | |
182 | + -keyalg EC \ | |
183 | + -dname "CN=$SERVER_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
184 | + -validity $VALIDITY \ | |
185 | + -storetype $STORETYPE \ | |
186 | + -keypass $SERVER_STORE_PWD \ | |
187 | + -keystore $SERVER_STORE \ | |
188 | + -storepass $SERVER_STORE_PWD | |
189 | +keytool \ | |
190 | + -exportcert \ | |
191 | + -alias $SERVER_ALIAS \ | |
192 | + -keystore $SERVER_STORE \ | |
193 | + -storepass $SERVER_STORE_PWD | | |
194 | + keytool \ | |
195 | + -importcert \ | |
196 | + -alias $SERVER_SELF_ALIAS \ | |
197 | + -keystore $SERVER_STORE \ | |
198 | + -storepass $SERVER_STORE_PWD \ | |
199 | + -noprompt | |
200 | + | |
201 | +echo | |
202 | +echo "${H2}Creating server certificate signed by root CA...${RESET}" | |
203 | +keytool \ | |
204 | + -certreq \ | |
205 | + -alias $SERVER_ALIAS \ | |
206 | + -dname "CN=$SERVER_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
207 | + -keystore $SERVER_STORE \ | |
208 | + -storepass $SERVER_STORE_PWD | | |
209 | + keytool \ | |
210 | + -gencert \ | |
211 | + -alias $ROOT_KEY_ALIAS \ | |
212 | + -keystore $SERVER_STORE \ | |
213 | + -storepass $SERVER_STORE_PWD \ | |
214 | + -storetype $STORETYPE \ | |
215 | + -validity $VALIDITY | | |
216 | + keytool \ | |
217 | + -importcert \ | |
218 | + -alias $SERVER_ALIAS \ | |
219 | + -keystore $SERVER_STORE \ | |
220 | + -storepass $SERVER_STORE_PWD | |
221 | + | |
222 | +echo | |
223 | +echo "${H2}Creating bootstrap key and self-signed certificate ...${RESET}" | |
224 | +keytool \ | |
225 | + -genkeypair \ | |
226 | + -alias $BOOTSTRAP_ALIAS \ | |
227 | + -keyalg EC \ | |
228 | + -dname "CN=$BOOTSTRAP_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
229 | + -validity $VALIDITY \ | |
230 | + -storetype $STORETYPE \ | |
231 | + -keypass $SERVER_STORE_PWD \ | |
232 | + -keystore $SERVER_STORE \ | |
233 | + -storepass $SERVER_STORE_PWD | |
234 | +keytool \ | |
235 | + -exportcert \ | |
236 | + -alias $BOOTSTRAP_ALIAS \ | |
237 | + -keystore $SERVER_STORE \ | |
238 | + -storepass $SERVER_STORE_PWD | | |
239 | + keytool \ | |
240 | + -importcert \ | |
241 | + -alias $BOOTSTRAP_SELF_ALIAS \ | |
242 | + -keystore $SERVER_STORE \ | |
243 | + -storepass $SERVER_STORE_PWD \ | |
244 | + -noprompt | |
245 | + | |
246 | +echo | |
247 | +echo "${H2}Creating bootstrap certificate signed by root CA...${RESET}" | |
248 | +keytool \ | |
249 | + -certreq \ | |
250 | + -alias $BOOTSTRAP_ALIAS \ | |
251 | + -dname "CN=$BOOTSTRAP_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
252 | + -keystore $SERVER_STORE \ | |
253 | + -storepass $SERVER_STORE_PWD | | |
254 | + keytool \ | |
255 | + -gencert \ | |
256 | + -alias $ROOT_KEY_ALIAS \ | |
257 | + -keystore $SERVER_STORE \ | |
258 | + -storepass $SERVER_STORE_PWD \ | |
259 | + -storetype $STORETYPE \ | |
260 | + -validity $VALIDITY | | |
261 | + keytool \ | |
262 | + -importcert \ | |
263 | + -alias $BOOTSTRAP_ALIAS \ | |
264 | + -keystore $SERVER_STORE \ | |
265 | + -storepass $SERVER_STORE_PWD | |
266 | + | |
267 | +echo | |
268 | +echo "${H1}Client Keystore : ${RESET}" | |
269 | +echo "${H1}==================${RESET}" | |
270 | +#echo "${H2}Creating client key and self-signed certificate with expected CN...${RESET}" | |
271 | +#keytool \ | |
272 | +# -genkeypair \ | |
273 | +# -alias $CLIENT_ALIAS \ | |
274 | +# -keyalg EC \ | |
275 | +# -dname "CN=$CLIENT_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
276 | +# -validity $VALIDITY \ | |
277 | +# -storetype $STORETYPE \ | |
278 | +# -keypass $CLIENT_STORE_PWD \ | |
279 | +# -keystore $CLIENT_STORE \ | |
280 | +# -storepass $CLIENT_STORE_PWD | |
281 | +#keytool \ | |
282 | +# -exportcert \ | |
283 | +# -alias $CLIENT_ALIAS \ | |
284 | +# -keystore $CLIENT_STORE \ | |
285 | +# -storepass $CLIENT_STORE_PWD | \ | |
286 | +# keytool \ | |
287 | +# -importcert \ | |
288 | +# -alias $CLIENT_SELF_ALIAS \ | |
289 | +# -keystore $CLIENT_STORE \ | |
290 | +# -storepass $CLIENT_STORE_PWD \ | |
291 | +# -noprompt | |
292 | + | |
293 | +echo | |
294 | +echo "${H2}Import root certificate just to be able to import need by root CA with expected CN...${RESET}" | |
295 | +keytool \ | |
296 | + -exportcert \ | |
297 | + -alias $ROOT_KEY_ALIAS \ | |
298 | + -keystore $SERVER_STORE \ | |
299 | + -storepass $SERVER_STORE_PWD | | |
300 | + keytool \ | |
301 | + -importcert \ | |
302 | + -alias $ROOT_KEY_ALIAS \ | |
303 | + -keystore $CLIENT_STORE \ | |
304 | + -storepass $CLIENT_STORE_PWD \ | |
305 | + -noprompt | |
306 | + | |
307 | +#echo | |
308 | +#echo "${H2}Creating client certificate signed by root CA with expected CN...${RESET}" | |
309 | +#keytool \ | |
310 | +# -certreq \ | |
311 | +# -alias $CLIENT_ALIAS \ | |
312 | +# -dname "CN=$CLIENT_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
313 | +# -keystore $CLIENT_STORE \ | |
314 | +# -storepass $CLIENT_STORE_PWD | \ | |
315 | +# keytool \ | |
316 | +# -gencert \ | |
317 | +# -alias $ROOT_KEY_ALIAS \ | |
318 | +# -keystore $SERVER_STORE \ | |
319 | +# -storepass $SERVER_STORE_PWD \ | |
320 | +# -storetype $STORETYPE \ | |
321 | +# -validity $VALIDITY | \ | |
322 | +# keytool \ | |
323 | +# -importcert \ | |
324 | +# -alias $CLIENT_ALIAS \ | |
325 | +# -keystore $CLIENT_STORE \ | |
326 | +# -storepass $CLIENT_STORE_PWD \ | |
327 | +# -noprompt | |
328 | + | |
329 | +cert_end_point() { | |
330 | + echo "${H2}Creating client key and self-signed certificate with expected CN $CLIENT_SELF_CN ${RESET}" | |
331 | + keytool \ | |
332 | + -genkeypair \ | |
333 | + -alias $CLIENT_CN_ALIAS \ | |
334 | + -keyalg EC \ | |
335 | + -dname "CN=$CLIENT_SELF_CN, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
336 | + -validity $VALIDITY \ | |
337 | + -storetype $STORETYPE \ | |
338 | + -keypass $CLIENT_STORE_PWD \ | |
339 | + -keystore $CLIENT_STORE \ | |
340 | + -storepass $CLIENT_STORE_PWD | |
341 | + keytool \ | |
342 | + -exportcert \ | |
343 | + -alias $CLIENT_CN_ALIAS \ | |
344 | + -keystore $CLIENT_STORE \ | |
345 | + -storepass $CLIENT_STORE_PWD | | |
346 | + keytool \ | |
347 | + -importcert \ | |
348 | + -alias $CLIENT_SELF_ALIAS \ | |
349 | + -keystore $CLIENT_STORE \ | |
350 | + -storepass $CLIENT_STORE_PWD \ | |
351 | + -noprompt | |
352 | + | |
353 | + echo | |
354 | + echo "${H2}Creating client certificate signed by root CA with expected $CLIENT_CN_NAME ${RESET}" | |
355 | + keytool \ | |
356 | + -certreq \ | |
357 | + -alias $CLIENT_CN_ALIAS \ | |
358 | + -dname "CN=$CLIENT_CN_NAME, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" \ | |
359 | + -keystore $CLIENT_STORE \ | |
360 | + -storepass $CLIENT_STORE_PWD | | |
361 | + keytool \ | |
362 | + -gencert \ | |
363 | + -alias $ROOT_KEY_ALIAS \ | |
364 | + -keystore $SERVER_STORE \ | |
365 | + -storepass $SERVER_STORE_PWD \ | |
366 | + -storetype $STORETYPE \ | |
367 | + -validity $VALIDITY | | |
368 | + keytool \ | |
369 | + -importcert \ | |
370 | + -alias $CLIENT_CN_ALIAS \ | |
371 | + -keystore $CLIENT_STORE \ | |
372 | + -storepass $CLIENT_STORE_PWD \ | |
373 | + -noprompt | |
374 | +} | |
375 | + | |
376 | +while [ "$CLIENT_NUMBER" != "$client_finish" ]; do | |
377 | + CLIENT_CN_NAME=$(end_point) | |
378 | + CLIENT_CN_ALIAS=$(client_alias_point) | |
379 | + echo "$CLIENT_CN_NAME" | |
380 | + echo "$CLIENT_CN_ALIAS" | |
381 | + cert_end_point | |
382 | + CLIENT_NUMBER=$(($CLIENT_NUMBER + 1)) | |
383 | + echo "number $CLIENT_NUMBER" | |
384 | + echo "finish $client_finish" | |
385 | +done | |
386 | + | |
387 | +echo | |
388 | +echo "${H0}!!! Warning ${H2}Migrate ${H1}${SERVER_STORE} ${H2}to ${H1}PKCS12 ${H2}which is an industry standard format..${RESET}" | |
389 | +keytool \ | |
390 | + -importkeystore \ | |
391 | + -srckeystore $SERVER_STORE \ | |
392 | + -destkeystore $SERVER_STORE \ | |
393 | + -deststoretype pkcs12 \ | |
394 | + -srcstorepass $SERVER_STORE_PWD | |
395 | + | |
396 | +echo | |
397 | +echo "${H0}!!! Warning ${H2}Migrate ${H1}${CLIENT_STORE} ${H2}to ${H1}PKCS12 ${H2}which is an industry standard format..${RESET}" | |
398 | +keytool \ | |
399 | + -importkeystore \ | |
400 | + -srckeystore $CLIENT_STORE \ | |
401 | + -destkeystore $CLIENT_STORE \ | |
402 | + -deststoretype pkcs12 \ | |
403 | + -srcstorepass $CLIENT_STORE_PWD | ... | ... |
1 | +# | |
2 | +# Copyright © 2016-2017 The Thingsboard Authors | |
3 | +# | |
4 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | +# you may not use this file except in compliance with the License. | |
6 | +# You may obtain a copy of the License at | |
7 | +# | |
8 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
9 | +# | |
10 | +# Unless required by applicable law or agreed to in writing, software | |
11 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
12 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | +# See the License for the specific language governing permissions and | |
14 | +# limitations under the License. | |
15 | +# | |
16 | + | |
17 | +# Keystore common parameters | |
18 | +ROOT_KEY_ALIAS=rootCA | |
19 | +DOMAIN_SUFFIX="$(hostname)" | |
20 | +ROOT_CN="$DOMAIN_SUFFIX $ROOT_KEY_ALIAS" | |
21 | +ORGANIZATIONAL_UNIT=Thingsboard | |
22 | +ORGANIZATION=Thingsboard | |
23 | +CITY=SF | |
24 | +STATE_OR_PROVINCE=CA | |
25 | +TWO_LETTER_COUNTRY_CODE=US | |
26 | +VALIDITY=36500 #days | |
27 | +STORETYPE="JKS" | |
28 | + | |
29 | +#Server | |
30 | +SERVER_STORE=serverKeyStore1.jks | |
31 | +SERVER_STORE_PWD=server_ks_password1 | |
32 | +SERVER_ALIAS=server1 | |
33 | +SERVER_CN="$DOMAIN_SUFFIX server LwM2M signed by root CA" | |
34 | +SERVER_SELF_ALIAS=server_self_signed | |
35 | +SERVER_SELF_CN="$DOMAIN_SUFFIX server LwM2M self-signed" | |
36 | +BOOTSTRAP_ALIAS=bootstrap1 | |
37 | +BOOTSTRAP_CN="$DOMAIN_SUFFIX bootstrap server LwM2M signed by root CA" | |
38 | +BOOTSTRAP_SELF_ALIAS=bootstrap_self_signed | |
39 | +BOOTSTRAP_SELF_CN="$DOMAIN_SUFFIX bootstrap server LwM2M self-signed" | |
40 | + | |
41 | +# Client | |
42 | +CLIENT_STORE=clientKeyStore1.jks | |
43 | +CLIENT_STORE_PWD=client_ks_password1 | |
44 | +CLIENT_ALIAS=client_alias_1 | |
45 | +CLIENT_PREFIX=LwX509_ | |
46 | +CLIENT_SELF_ALIAS=client_self_signed | |
47 | +CLIENT_SELF_CN="$DOMAIN_SUFFIX client LwM2M self-signed" | |
48 | + | |
49 | +# Color output stuff | |
50 | +red=`tput setaf 1` | |
51 | +green=`tput setaf 2` | |
52 | +blue=`tput setaf 4` | |
53 | +bold=`tput bold` | |
54 | +H0=${red}${bold} | |
55 | +H1=${green}${bold} | |
56 | +H2=${blue} | |
57 | +RESET=`tput sgr0` | ... | ... |
1 | -<!-- | |
2 | - | |
3 | - Copyright © 2016-2020 The Thingsboard Authors | |
4 | - | |
5 | - Licensed under the Apache License, Version 2.0 (the "License"); | |
6 | - you may not use this file except in compliance with the License. | |
7 | - You may obtain a copy of the License at | |
8 | - | |
9 | - http://www.apache.org/licenses/LICENSE-2.0 | |
10 | - | |
11 | - Unless required by applicable law or agreed to in writing, software | |
12 | - distributed under the License is distributed on an "AS IS" BASIS, | |
13 | - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 | - See the License for the specific language governing permissions and | |
15 | - limitations under the License. | |
16 | - | |
17 | ---> | |
18 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
19 | 2 | <!-- |
20 | 3 | FILE INFORMATION | ... | ... |