diff --git a/tools/src/main/shell/keygen.sh b/tools/src/main/shell/keygen.sh index 5461605872..a287292b86 100755 --- a/tools/src/main/shell/keygen.sh +++ b/tools/src/main/shell/keygen.sh @@ -15,8 +15,51 @@ # limitations under the License. # +usage() { + echo "This script generates thingsboard server's ssl certificate" + echo "and optionally copies it to the server's resource directory." + echo "usage: ./keygen.sh [-c flag] [-d directory]" + echo " -c | --copy flag Set if copy keystore to server directory needed. Default value is true" + echo " -d | --dir directory Server keystore directory, where the generated keystore file will be copied." + echo " Default value is SERVER_KEYSTORE_DIR property from properties file" + echo " -p | --props | --properties file Properties file. default value is ./keygen.properties" + echo " -h | --help | ? Show this message" +} -. keygen.properties +COPY=true; +COPY_DIR="d" +PROPERTIES_FILE=keygen.properties + +while true; do + case "$1" in + -c | --copy) COPY=$2 ; + shift + ;; + -d | --dir | --directory) COPY_DIR=$2 ; + shift + ;; + -p | --props | --properties) PROPERTIES_FILE=$2 ; + shift + ;; + -h | --help | ?) usage + exit 0 + ;; + -- ) shift; + break + ;; + * ) break + ;; + esac + shift +done + +if [[ "$COPY" != true ]] && [[ "$COPY" != false ]]; then + usage +fi + +echo "copy: $COPY; copy_dir: $COPY_DIR; PROPERTIES_FILE=$PROPERTIES_FILE"; + +. $PROPERTIES_FILE echo "Generating SSL Key Pair..." @@ -30,29 +73,46 @@ keytool -genkeypair -v \ -keysize 2048 \ -validity 9999 +status=$? +if [[ $status != 0 ]]; then + exit $status; +fi + keytool -export \ -alias $SERVER_KEY_ALIAS \ -keystore $SERVER_FILE_PREFIX.jks \ -file $CLIENT_TRUSTSTORE -rfc \ -storepass $PASSWORD -read -p "Do you want to copy $SERVER_FILE_PREFIX.jks to server directory? " yn - case $yn in - [Yy]) echo "Please, specify destination dir: " - read -p "(Default: $SERVER_KEYSTORE_DIR): " dir - if [[ ! -z $dir ]]; then - DESTINATION=$dir; - else - DESTINATION=$SERVER_KEYSTORE_DIR - fi; - mkdir -p $SERVER_KEYSTORE_DIR - cp $SERVER_FILE_PREFIX.jks $DESTINATION - if [ $? -ne 0 ]; then - echo "Failed to copy keystore file." - else - echo "File copied successfully." - fi - break;; - * ) ;; - esac -echo "Done." +status=$? +if [[ $status != 0 ]]; then + exit $status; +fi + + +if [[ $COPY = true ]]; then + if [[ -z "$COPY_DIR" ]]; then + read -p "Do you want to copy $SERVER_FILE_PREFIX.jks to server directory? " yn + case $yn in + [Yy]) echo "Please, specify destination dir: " + read -p "(Default: copy_dir): " dir + if [[ ! -z $dir ]]; then + DESTINATION=$dir; + else + DESTINATION=$SERVER_KEYSTORE_DIR + fi; + break;; + * ) ;; + esac + else + DESTINATION=$COPY_DIR + fi + mkdir -p $DESTINATION + cp $SERVER_FILE_PREFIX.jks $DESTINATION + if [ $? -ne 0 ]; then + echo "Failed to copy keystore file." + else + echo "File copied successfully." + fi +fi +echo "Done." \ No newline at end of file diff --git a/tools/src/main/shell/securemqttclient.keygen.sh b/tools/src/main/shell/securemqttclient.keygen.sh index eba141bd40..c85f2ff356 100755 --- a/tools/src/main/shell/securemqttclient.keygen.sh +++ b/tools/src/main/shell/securemqttclient.keygen.sh @@ -15,8 +15,34 @@ # limitations under the License. # +usage() { + echo "This script generates client public/private rey pair, extracts them to a no-password RSA pem file," + echo "and also imports server public key to client trust store" + echo "usage: ./securemqttclient.keygen.sh [-p file]" + echo " -p | --props | --properties file Properties file. default value is ./keygen.properties" + echo " -h | --help | ? Show this message" +} -. keygen.properties +PROPERTIES_FILE=keygen.properties + +while true; do + case "$1" in + -p | --props | --properties) PROPERTIES_FILE=$2 ; + shift + ;; + -h | --help | ?) usage + exit 0 + ;; + -- ) shift; + break + ;; + * ) break + ;; + esac + shift +done + +. $PROPERTIES_FILE echo "Generating SSL Key Pair..." diff --git a/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttSslHandlerProvider.java b/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttSslHandlerProvider.java index 6b293382a7..5701c71864 100644 --- a/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttSslHandlerProvider.java +++ b/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttSslHandlerProvider.java @@ -1,12 +1,12 @@ /** * Copyright © 2016-2017 The Thingsboard Authors - *

+ * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - *

- * http://www.apache.org/licenses/LICENSE-2.0 - *

+ * + * http://www.apache.org/licenses/LICENSE-2.0 + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.