Commit e6056ec8a069112af006d2ad1070ee4bc93eb57c
Committed by
GitHub
Merge pull request #3951 from cdelston0/master
Add support for generating server and client keys with alternative TLS algorithms
Showing
3 changed files
with
24 additions
and
7 deletions
@@ -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=$? |