Commit d3f018b0ef0e9f5c08203fd2224621ab4a05deea

Authored by Chris Elston
1 parent 4aa55bcc

Add config params for server and client key algs

This change adds new parameters to keygen.properties to allow the
configuration of the server and client TLS key algorithms:

SERVER_KEY_ALG, SERVER_KEY_SIZE, CLIENT_KEY_ALG, CLIENT_KEY_SIZE

Default values for these have been set at RSA and 2048 to preserve
previous operation.

I have also tested SERVER_KEY_ALG=EC and SERVER_KEY_SIZE=256, along with
CLIENT_KEY_ALG=EC and CLIENT_KEY_SIZE=256. Other algorithms and sizes
may be supported, YMMV.
@@ -16,7 +16,7 @@ @@ -16,7 +16,7 @@
16 # 16 #
17 17
18 usage() { 18 usage() {
19 - echo "This script generates client public/private rey pair, extracts them to a no-password RSA pem file," 19 + echo "This script generates client public/private key pair, extracts them to a no-password pem file,"
20 echo "and imports server public key to client keystore" 20 echo "and imports server public key to client keystore"
21 echo "usage: ./client.keygen.sh [-p file]" 21 echo "usage: ./client.keygen.sh [-p file]"
22 echo " -p | --props | --properties file Properties file. default value is ./keygen.properties" 22 echo " -p | --props | --properties file Properties file. default value is ./keygen.properties"
@@ -70,6 +70,20 @@ while : @@ -70,6 +70,20 @@ while :
70 done 70 done
71 fi 71 fi
72 72
  73 +OPENSSL_CMD=""
  74 +case $CLIENT_KEY_ALG in
  75 +RSA)
  76 + OPENSSL_CMD="rsa"
  77 + ;;
  78 +EC)
  79 + OPENSSL_CMD="ec"
  80 + ;;
  81 +esac
  82 +if [ -z "$OPENSSL_CMD" ]; then
  83 + echo "Unexpected CLIENT_KEY_ALG. Exiting."
  84 + exit 0
  85 +fi
  86 +
73 echo "Generating SSL Key Pair..." 87 echo "Generating SSL Key Pair..."
74 88
75 keytool -genkeypair -v \ 89 keytool -genkeypair -v \
@@ -77,8 +91,8 @@ keytool -genkeypair -v \ @@ -77,8 +91,8 @@ keytool -genkeypair -v \
77 -keystore $CLIENT_FILE_PREFIX.jks \ 91 -keystore $CLIENT_FILE_PREFIX.jks \
78 -keypass $CLIENT_KEY_PASSWORD \ 92 -keypass $CLIENT_KEY_PASSWORD \
79 -storepass $CLIENT_KEYSTORE_PASSWORD \ 93 -storepass $CLIENT_KEYSTORE_PASSWORD \
80 - -keyalg RSA \  
81 - -keysize 2048 \ 94 + -keyalg $CLIENT_KEY_ALG \
  95 + -keysize $CLIENT_KEY_SIZE\
82 -validity 9999 \ 96 -validity 9999 \
83 -dname "CN=$DOMAIN_SUFFIX, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE" 97 -dname "CN=$DOMAIN_SUFFIX, OU=$ORGANIZATIONAL_UNIT, O=$ORGANIZATION, L=$CITY, ST=$STATE_OR_PROVINCE, C=$TWO_LETTER_COUNTRY_CODE"
84 98
@@ -110,7 +124,7 @@ keytool --importcert \ @@ -110,7 +124,7 @@ keytool --importcert \
110 -noprompt 124 -noprompt
111 125
112 echo "Exporting no-password pem certificate" 126 echo "Exporting no-password pem certificate"
113 -openssl rsa -in $CLIENT_FILE_PREFIX.pem -out $CLIENT_FILE_PREFIX.nopass.pem -passin pass:$CLIENT_KEY_PASSWORD 127 +openssl $OPENSSL_CMD -in $CLIENT_FILE_PREFIX.pem -out $CLIENT_FILE_PREFIX.nopass.pem -passin pass:$CLIENT_KEY_PASSWORD
114 tail -n +$(($(grep -m1 -n -e '-----BEGIN CERTIFICATE' $CLIENT_FILE_PREFIX.pem | cut -d: -f1) )) \ 128 tail -n +$(($(grep -m1 -n -e '-----BEGIN CERTIFICATE' $CLIENT_FILE_PREFIX.pem | cut -d: -f1) )) \
115 $CLIENT_FILE_PREFIX.pem >> $CLIENT_FILE_PREFIX.nopass.pem 129 $CLIENT_FILE_PREFIX.pem >> $CLIENT_FILE_PREFIX.nopass.pem
116 130
@@ -26,6 +26,8 @@ SERVER_KEY_PASSWORD=server_key_password @@ -26,6 +26,8 @@ SERVER_KEY_PASSWORD=server_key_password
26 26
27 SERVER_KEY_ALIAS="serveralias" 27 SERVER_KEY_ALIAS="serveralias"
28 SERVER_FILE_PREFIX="mqttserver" 28 SERVER_FILE_PREFIX="mqttserver"
  29 +SERVER_KEY_ALG="RSA"
  30 +SERVER_KEY_SIZE="2048"
29 SERVER_KEYSTORE_DIR="/etc/thingsboard/conf" 31 SERVER_KEYSTORE_DIR="/etc/thingsboard/conf"
30 32
31 CLIENT_KEYSTORE_PASSWORD=password 33 CLIENT_KEYSTORE_PASSWORD=password
@@ -33,4 +35,5 @@ CLIENT_KEY_PASSWORD=password @@ -33,4 +35,5 @@ CLIENT_KEY_PASSWORD=password
33 35
34 CLIENT_KEY_ALIAS="clientalias" 36 CLIENT_KEY_ALIAS="clientalias"
35 CLIENT_FILE_PREFIX="mqttclient" 37 CLIENT_FILE_PREFIX="mqttclient"
36 - 38 +CLIENT_KEY_ALG="RSA"
  39 +CLIENT_KEY_SIZE="2048"
@@ -92,8 +92,8 @@ keytool -genkeypair -v \ @@ -92,8 +92,8 @@ keytool -genkeypair -v \
92 -keystore $SERVER_FILE_PREFIX.jks \ 92 -keystore $SERVER_FILE_PREFIX.jks \
93 -keypass $SERVER_KEY_PASSWORD \ 93 -keypass $SERVER_KEY_PASSWORD \
94 -storepass $SERVER_KEYSTORE_PASSWORD \ 94 -storepass $SERVER_KEYSTORE_PASSWORD \
95 - -keyalg RSA \  
96 - -keysize 2048 \ 95 + -keyalg $SERVER_KEY_ALG \
  96 + -keysize $SERVER_KEY_SIZE \
97 -validity 9999 97 -validity 9999
98 98
99 status=$? 99 status=$?