Commit 483a69fed1981ee07e14b9b00f15f6f515828b82

Authored by Igor Kulikov
1 parent 330ff094

Use SSL credentials configuration to setup HTTPS. Enable Lwm2m credentials by default.

... ... @@ -31,6 +31,7 @@ import java.util.Arrays;
31 31 "org.thingsboard.server.service.install",
32 32 "org.thingsboard.server.dao",
33 33 "org.thingsboard.server.common.stats",
  34 + "org.thingsboard.server.common.transport.config.ssl",
34 35 "org.thingsboard.server.cache"})
35 36 public class ThingsboardInstallApplication {
36 37
... ...
... ... @@ -23,14 +23,30 @@ server:
23 23 ssl:
24 24 # Enable/disable SSL support
25 25 enabled: "${SSL_ENABLED:false}"
26   - # Path to the key store that holds the SSL certificate
27   - key-store: "${SSL_KEY_STORE:classpath:keystore/keystore.p12}"
28   - # Password used to access the key store
29   - key-store-password: "${SSL_KEY_STORE_PASSWORD:thingsboard}"
30   - # Type of the key store
31   - key-store-type: "${SSL_KEY_STORE_TYPE:PKCS12}"
32   - # Alias that identifies the key in the key store
33   - key-alias: "${SSL_KEY_ALIAS:tomcat}"
  26 + # Server SSL credentials
  27 + credentials:
  28 + # Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
  29 + type: "${SSL_CREDENTIALS_TYPE:PEM}"
  30 + # PEM server credentials
  31 + pem:
  32 + # Path to the server certificate file (holds server certificate or certificate chain, may include server private key)
  33 + cert_file: "${SSL_PEM_CERT:server.pem}"
  34 + # Path to the server certificate private key file (optional)
  35 + key_file: "${SSL_PEM_KEY:server_key.pem}"
  36 + # Server certificate private key password (optional)
  37 + key_password: "${SSL_PEM_KEY_PASSWORD:server_key_password}"
  38 + # Keystore server credentials
  39 + keystore:
  40 + # Type of the key store
  41 + type: "${SSL_KEY_STORE_TYPE:PKCS12}"
  42 + # Path to the key store that holds the SSL certificate
  43 + store_file: "${SSL_KEY_STORE:classpath:keystore/keystore.p12}"
  44 + # Password used to access the key store
  45 + store_password: "${SSL_KEY_STORE_PASSWORD:thingsboard}"
  46 + # Key alias
  47 + key_alias: "${SSL_KEY_ALIAS:tomcat}"
  48 + # Password used to access the key
  49 + key_password: "${SSL_KEY_PASSWORD:thingsboard}"
34 50 log_controller_error_stack_trace: "${HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE:false}"
35 51 ws:
36 52 send_timeout: "${TB_SERVER_WS_SEND_TIMEOUT:5000}"
... ... @@ -679,10 +695,10 @@ transport:
679 695 store_file: "${COAP_DTLS_KEY_STORE:coapserver.jks}"
680 696 # Password used to access the key store
681 697 store_password: "${COAP_DTLS_KEY_STORE_PASSWORD:server_ks_password}"
682   - # Password used to access the key
683   - key_password: "${COAP_DTLS_KEY_PASSWORD:server_key_password}"
684 698 # Key alias
685 699 key_alias: "${COAP_DTLS_KEY_ALIAS:serveralias}"
  700 + # Password used to access the key
  701 + key_password: "${COAP_DTLS_KEY_PASSWORD:server_key_password}"
686 702 x509:
687 703 # Skip certificate validity check for client certificates.
688 704 skip_validity_check_for_client_cert: "${TB_COAP_X509_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"
... ... @@ -702,7 +718,7 @@ transport:
702 718 # Server X509 Certificates support
703 719 credentials:
704 720 # Whether to enable LWM2M server X509 Certificate/RPK support
705   - enabled: "${LWM2M_SERVER_CREDENTIALS_ENABLED:false}"
  721 + enabled: "${LWM2M_SERVER_CREDENTIALS_ENABLED:true}"
706 722 # Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
707 723 type: "${LWM2M_SERVER_CREDENTIALS_TYPE:PEM}"
708 724 # PEM server credentials
... ... @@ -721,10 +737,10 @@ transport:
721 737 store_file: "${LWM2M_SERVER_KEY_STORE:lwm2mserver.jks}"
722 738 # Password used to access the key store
723 739 store_password: "${LWM2M_SERVER_KEY_STORE_PASSWORD:server_ks_password}"
724   - # Password used to access the key
725   - key_password: "${LWM2M_SERVER_KEY_PASSWORD:server_key_password}"
726 740 # Key alias
727 741 key_alias: "${LWM2M_SERVER_KEY_ALIAS:server}"
  742 + # Password used to access the key
  743 + key_password: "${LWM2M_SERVER_KEY_PASSWORD:server_ks_password}"
728 744 # Only Certificate_x509:
729 745 skip_validity_check_for_client_cert: "${TB_LWM2M_SERVER_SECURITY_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"
730 746 bootstrap:
... ... @@ -738,7 +754,7 @@ transport:
738 754 # Bootstrap server X509 Certificates support
739 755 credentials:
740 756 # Whether to enable LWM2M bootstrap server X509 Certificate/RPK support
741   - enabled: "${LWM2M_BS_CREDENTIALS_ENABLED:false}"
  757 + enabled: "${LWM2M_BS_CREDENTIALS_ENABLED:true}"
742 758 # Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
743 759 type: "${LWM2M_BS_CREDENTIALS_TYPE:PEM}"
744 760 # PEM server credentials
... ... @@ -757,15 +773,15 @@ transport:
757 773 store_file: "${LWM2M_BS_KEY_STORE:lwm2mserver.jks}"
758 774 # Password used to access the key store
759 775 store_password: "${LWM2M_BS_KEY_STORE_PASSWORD:server_ks_password}"
760   - # Password used to access the key
761   - key_password: "${LWM2M_BS_KEY_PASSWORD:server_key_password}"
762 776 # Key alias
763 777 key_alias: "${LWM2M_BS_KEY_ALIAS:bootstrap}"
  778 + # Password used to access the key
  779 + key_password: "${LWM2M_BS_KEY_PASSWORD:server_ks_password}"
764 780 security:
765 781 # X509 trust certificates
766 782 trust-credentials:
767 783 # Whether to load X509 trust certificates
768   - enabled: "${LWM2M_TRUST_CREDENTIALS_ENABLED:false}"
  784 + enabled: "${LWM2M_TRUST_CREDENTIALS_ENABLED:true}"
769 785 # Trust certificates store type (PEM - pem certificates file; KEYSTORE - java keystore)
770 786 type: "${LWM2M_TRUST_CREDENTIALS_TYPE:PEM}"
771 787 # PEM certificates
... ...
... ... @@ -27,27 +27,36 @@ import java.net.URL;
27 27 @Slf4j
28 28 public class ResourceUtils {
29 29
  30 + public static final String CLASSPATH_URL_PREFIX = "classpath:";
  31 +
30 32 public static boolean resourceExists(Object classLoaderSource, String filePath) {
31 33 return resourceExists(classLoaderSource.getClass().getClassLoader(), filePath);
32 34 }
33 35
34 36 public static boolean resourceExists(ClassLoader classLoader, String filePath) {
35   - File resourceFile = new File(filePath);
36   - if (resourceFile.exists()) {
37   - return true;
38   - } else {
39   - InputStream classPathStream = classLoader.getResourceAsStream(filePath);
40   - if (classPathStream != null) {
  37 + boolean classPathResource = false;
  38 + String path = filePath;
  39 + if (path.startsWith(CLASSPATH_URL_PREFIX)) {
  40 + path = path.substring(CLASSPATH_URL_PREFIX.length());
  41 + classPathResource = true;
  42 + }
  43 + if (!classPathResource) {
  44 + File resourceFile = new File(path);
  45 + if (resourceFile.exists()) {
41 46 return true;
42   - } else {
43   - try {
44   - URL url = Resources.getResource(filePath);
45   - if (url != null) {
46   - return true;
47   - }
48   - } catch (IllegalArgumentException e) {}
49 47 }
50 48 }
  49 + InputStream classPathStream = classLoader.getResourceAsStream(path);
  50 + if (classPathStream != null) {
  51 + return true;
  52 + } else {
  53 + try {
  54 + URL url = Resources.getResource(path);
  55 + if (url != null) {
  56 + return true;
  57 + }
  58 + } catch (IllegalArgumentException e) {}
  59 + }
51 60 return false;
52 61 }
53 62
... ... @@ -56,32 +65,40 @@ public class ResourceUtils {
56 65 }
57 66
58 67 public static InputStream getInputStream(ClassLoader classLoader, String filePath) {
  68 + boolean classPathResource = false;
  69 + String path = filePath;
  70 + if (path.startsWith(CLASSPATH_URL_PREFIX)) {
  71 + path = path.substring(CLASSPATH_URL_PREFIX.length());
  72 + classPathResource = true;
  73 + }
59 74 try {
60   - InputStream keyStoreInputStream;
61   - File keyStoreFile = new File(filePath);
62   - if (keyStoreFile.exists()) {
63   - log.info("Reading key store from file {}", filePath);
64   - keyStoreInputStream = new FileInputStream(keyStoreFile);
  75 + if (!classPathResource) {
  76 + File resourceFile = new File(path);
  77 + if (resourceFile.exists()) {
  78 + log.info("Reading resource data from file {}", filePath);
  79 + return new FileInputStream(resourceFile);
  80 + }
  81 + }
  82 + InputStream classPathStream = classLoader.getResourceAsStream(path);
  83 + if (classPathStream != null) {
  84 + log.info("Reading resource data from class path {}", filePath);
  85 + return classPathStream;
65 86 } else {
66   - InputStream classPathStream = classLoader.getResourceAsStream(filePath);
67   - if (classPathStream != null) {
68   - log.info("Reading key store from class path {}", filePath);
69   - keyStoreInputStream = classPathStream;
70   - } else {
71   - URI uri = Resources.getResource(filePath).toURI();
72   - log.info("Reading key store from URI {}", filePath);
73   - keyStoreInputStream = new FileInputStream(new File(uri));
  87 + URL url = Resources.getResource(path);
  88 + if (url != null) {
  89 + URI uri = url.toURI();
  90 + log.info("Reading resource data from URI {}", filePath);
  91 + return new FileInputStream(new File(uri));
74 92 }
75 93 }
76   - return keyStoreInputStream;
77 94 } catch (Exception e) {
78 95 if (e instanceof NullPointerException) {
79 96 log.warn("Unable to find resource: " + filePath);
80 97 } else {
81 98 log.warn("Unable to find resource: " + filePath, e);
82 99 }
83   - throw new RuntimeException("Unable to find resource: " + filePath);
84 100 }
  101 + throw new RuntimeException("Unable to find resource: " + filePath);
85 102 }
86 103
87 104 public static String getUri(Object classLoaderSource, String filePath) {
... ... @@ -90,10 +107,10 @@ public class ResourceUtils {
90 107
91 108 public static String getUri(ClassLoader classLoader, String filePath) {
92 109 try {
93   - File keyStoreFile = new File(filePath);
94   - if (keyStoreFile.exists()) {
95   - log.info("Reading key store from file {}", filePath);
96   - return keyStoreFile.getAbsolutePath();
  110 + File resourceFile = new File(filePath);
  111 + if (resourceFile.exists()) {
  112 + log.info("Reading resource data from file {}", filePath);
  113 + return resourceFile.getAbsolutePath();
97 114 } else {
98 115 URL url = classLoader.getResource(filePath);
99 116 return url.toURI().toString();
... ...
... ... @@ -71,6 +71,7 @@ public abstract class AbstractSslCredentials implements SslCredentials {
71 71 String alias = e.nextElement();
72 72 privateKeyEntry = tryGetPrivateKeyEntry(this.keyStore, alias, this.keyPasswordArray);
73 73 if (privateKeyEntry != null) {
  74 + this.updateKeyAlias(alias);
74 75 break;
75 76 }
76 77 }
... ... @@ -88,6 +89,11 @@ public abstract class AbstractSslCredentials implements SslCredentials {
88 89 }
89 90
90 91 @Override
  92 + public KeyStore getKeyStore() {
  93 + return this.keyStore;
  94 + }
  95 +
  96 + @Override
91 97 public PrivateKey getPrivateKey() {
92 98 return this.privateKey;
93 99 }
... ... @@ -123,12 +129,10 @@ public abstract class AbstractSslCredentials implements SslCredentials {
123 129
124 130 protected abstract boolean canUse();
125 131
126   - protected abstract String getKeyPassword();
127   -
128   - protected abstract String getKeyAlias();
129   -
130 132 protected abstract KeyStore loadKeyStore(boolean isPrivateKeyRequired, char[] keyPasswordArray) throws IOException, GeneralSecurityException;
131 133
  134 + protected abstract void updateKeyAlias(String keyAlias);
  135 +
132 136 private static X509Certificate[] asX509Certificates(Certificate[] certificates) {
133 137 if (null == certificates || 0 == certificates.length) {
134 138 throw new IllegalArgumentException("certificates missing!");
... ...
... ... @@ -49,4 +49,9 @@ public class KeystoreSslCredentials extends AbstractSslCredentials {
49 49 }
50 50 return keyStore;
51 51 }
  52 +
  53 + @Override
  54 + protected void updateKeyAlias(String keyAlias) {
  55 + this.keyAlias = keyAlias;
  56 + }
52 57 }
... ...
... ... @@ -17,6 +17,7 @@ package org.thingsboard.server.common.transport.config.ssl;
17 17
18 18 import lombok.Data;
19 19 import lombok.EqualsAndHashCode;
  20 +import lombok.Getter;
20 21 import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
21 22 import org.bouncycastle.cert.X509CertificateHolder;
22 23 import org.bouncycastle.cert.jcajce.JcaX509CertificateConverter;
... ... @@ -48,10 +49,11 @@ import java.util.stream.Collectors;
48 49 @EqualsAndHashCode(callSuper = false)
49 50 public class PemSslCredentials extends AbstractSslCredentials {
50 51
  52 + private static final String DEFAULT_KEY_ALIAS = "server";
  53 +
51 54 private String certFile;
52 55 private String keyFile;
53 56 private String keyPassword;
54   - private final String keyAlias = "serveralias";
55 57
56 58 @Override
57 59 protected boolean canUse() {
... ... @@ -125,8 +127,17 @@ public class PemSslCredentials extends AbstractSslCredentials {
125 127 CertPath certPath = factory.generateCertPath(certificates);
126 128 List<? extends Certificate> path = certPath.getCertificates();
127 129 Certificate[] x509Certificates = path.toArray(new Certificate[0]);
128   - keyStore.setKeyEntry(this.keyAlias, privateKey, keyPasswordArray, x509Certificates);
  130 + keyStore.setKeyEntry(DEFAULT_KEY_ALIAS, privateKey, keyPasswordArray, x509Certificates);
129 131 }
130 132 return keyStore;
131 133 }
  134 +
  135 + @Override
  136 + public String getKeyAlias() {
  137 + return DEFAULT_KEY_ALIAS;
  138 + }
  139 +
  140 + @Override
  141 + protected void updateKeyAlias(String keyAlias) {
  142 + }
132 143 }
... ...
... ... @@ -19,6 +19,7 @@ import javax.net.ssl.KeyManagerFactory;
19 19 import javax.net.ssl.TrustManagerFactory;
20 20 import java.io.IOException;
21 21 import java.security.GeneralSecurityException;
  22 +import java.security.KeyStore;
22 23 import java.security.KeyStoreException;
23 24 import java.security.NoSuchAlgorithmException;
24 25 import java.security.PrivateKey;
... ... @@ -30,6 +31,12 @@ public interface SslCredentials {
30 31
31 32 void init(boolean trustsOnly) throws IOException, GeneralSecurityException;
32 33
  34 + KeyStore getKeyStore();
  35 +
  36 + String getKeyPassword();
  37 +
  38 + String getKeyAlias();
  39 +
33 40 PrivateKey getPrivateKey();
34 41
35 42 PublicKey getPublicKey();
... ...
  1 +/**
  2 + * Copyright © 2016-2021 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 +package org.thingsboard.server.common.transport.config.ssl;
  17 +
  18 +import org.springframework.beans.factory.annotation.Autowired;
  19 +import org.springframework.beans.factory.annotation.Qualifier;
  20 +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
  21 +import org.springframework.boot.autoconfigure.web.ServerProperties;
  22 +import org.springframework.boot.context.properties.ConfigurationProperties;
  23 +import org.springframework.boot.web.server.Ssl;
  24 +import org.springframework.boot.web.server.SslStoreProvider;
  25 +import org.springframework.boot.web.server.WebServerFactoryCustomizer;
  26 +import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
  27 +import org.springframework.context.annotation.Bean;
  28 +import org.springframework.stereotype.Component;
  29 +
  30 +import java.security.KeyStore;
  31 +
  32 +@Component
  33 +@ConditionalOnExpression("'${spring.main.web-environment:true}'=='true' && '${server.ssl.enabled:false}'=='true'")
  34 +public class SslCredentialsWebServerCustomizer implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
  35 +
  36 + @Bean
  37 + @ConfigurationProperties(prefix = "server.ssl.credentials")
  38 + public SslCredentialsConfig httpServerSslCredentials() {
  39 + return new SslCredentialsConfig("HTTP Server SSL Credentials", false);
  40 + }
  41 +
  42 + @Autowired
  43 + @Qualifier("httpServerSslCredentials")
  44 + private SslCredentialsConfig httpServerSslCredentialsConfig;
  45 +
  46 + private final ServerProperties serverProperties;
  47 +
  48 + public SslCredentialsWebServerCustomizer(ServerProperties serverProperties) {
  49 + this.serverProperties = serverProperties;
  50 + }
  51 +
  52 + @Override
  53 + public void customize(ConfigurableServletWebServerFactory factory) {
  54 + SslCredentials sslCredentials = this.httpServerSslCredentialsConfig.getCredentials();
  55 + Ssl ssl = serverProperties.getSsl();
  56 + ssl.setKeyAlias(sslCredentials.getKeyAlias());
  57 + ssl.setKeyPassword(sslCredentials.getKeyPassword());
  58 + factory.setSsl(ssl);
  59 + factory.setSslStoreProvider(new SslStoreProvider() {
  60 + @Override
  61 + public KeyStore getKeyStore() {
  62 + return sslCredentials.getKeyStore();
  63 + }
  64 +
  65 + @Override
  66 + public KeyStore getTrustStore() {
  67 + return null;
  68 + }
  69 + });
  70 + }
  71 +}
... ...
... ... @@ -118,10 +118,10 @@ transport:
118 118 store_file: "${COAP_DTLS_KEY_STORE:coapserver.jks}"
119 119 # Password used to access the key store
120 120 store_password: "${COAP_DTLS_KEY_STORE_PASSWORD:server_ks_password}"
121   - # Password used to access the key
122   - key_password: "${COAP_DTLS_KEY_PASSWORD:server_key_password}"
123 121 # Key alias
124 122 key_alias: "${COAP_DTLS_KEY_ALIAS:serveralias}"
  123 + # Password used to access the key
  124 + key_password: "${COAP_DTLS_KEY_PASSWORD:server_key_password}"
125 125 x509:
126 126 # Skip certificate validity check for client certificates.
127 127 skip_validity_check_for_client_cert: "${TB_COAP_X509_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"
... ...
... ... @@ -19,6 +19,34 @@ server:
19 19 address: "${HTTP_BIND_ADDRESS:0.0.0.0}"
20 20 # Server bind port
21 21 port: "${HTTP_BIND_PORT:8081}"
  22 + # Server SSL configuration
  23 + ssl:
  24 + # Enable/disable SSL support
  25 + enabled: "${SSL_ENABLED:false}"
  26 + # Server SSL credentials
  27 + credentials:
  28 + # Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
  29 + type: "${SSL_CREDENTIALS_TYPE:PEM}"
  30 + # PEM server credentials
  31 + pem:
  32 + # Path to the server certificate file (holds server certificate or certificate chain, may include server private key)
  33 + cert_file: "${SSL_PEM_CERT:server.pem}"
  34 + # Path to the server certificate private key file (optional)
  35 + key_file: "${SSL_PEM_KEY:server_key.pem}"
  36 + # Server certificate private key password (optional)
  37 + key_password: "${SSL_PEM_KEY_PASSWORD:server_key_password}"
  38 + # Keystore server credentials
  39 + keystore:
  40 + # Type of the key store
  41 + type: "${SSL_KEY_STORE_TYPE:PKCS12}"
  42 + # Path to the key store that holds the SSL certificate
  43 + store_file: "${SSL_KEY_STORE:classpath:keystore/keystore.p12}"
  44 + # Password used to access the key store
  45 + store_password: "${SSL_KEY_STORE_PASSWORD:thingsboard}"
  46 + # Key alias
  47 + key_alias: "${SSL_KEY_ALIAS:tomcat}"
  48 + # Password used to access the key
  49 + key_password: "${SSL_KEY_PASSWORD:thingsboard}"
22 50
23 51 # Zookeeper connection parameters. Used for service discovery.
24 52 zk:
... ... @@ -283,4 +311,4 @@ management:
283 311 web:
284 312 exposure:
285 313 # Expose metrics endpoint (use value 'prometheus' to enable prometheus metrics).
286   - include: '${METRICS_ENDPOINTS_EXPOSE:info}'
\ No newline at end of file
  314 + include: '${METRICS_ENDPOINTS_EXPOSE:info}'
... ...
... ... @@ -114,7 +114,7 @@ transport:
114 114 # Server X509 Certificates support
115 115 credentials:
116 116 # Whether to enable LWM2M server X509 Certificate/RPK support
117   - enabled: "${LWM2M_SERVER_CREDENTIALS_ENABLED:false}"
  117 + enabled: "${LWM2M_SERVER_CREDENTIALS_ENABLED:true}"
118 118 # Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
119 119 type: "${LWM2M_SERVER_CREDENTIALS_TYPE:PEM}"
120 120 # PEM server credentials
... ... @@ -133,10 +133,10 @@ transport:
133 133 store_file: "${LWM2M_SERVER_KEY_STORE:lwm2mserver.jks}"
134 134 # Password used to access the key store
135 135 store_password: "${LWM2M_SERVER_KEY_STORE_PASSWORD:server_ks_password}"
136   - # Password used to access the key
137   - key_password: "${LWM2M_SERVER_KEY_PASSWORD:server_key_password}"
138 136 # Key alias
139 137 key_alias: "${LWM2M_SERVER_KEY_ALIAS:server}"
  138 + # Password used to access the key
  139 + key_password: "${LWM2M_SERVER_KEY_PASSWORD:server_ks_password}"
140 140 # Only Certificate_x509:
141 141 skip_validity_check_for_client_cert: "${TB_LWM2M_SERVER_SECURITY_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT:false}"
142 142 bootstrap:
... ... @@ -150,7 +150,7 @@ transport:
150 150 # Bootstrap server X509 Certificates support
151 151 credentials:
152 152 # Whether to enable LWM2M bootstrap server X509 Certificate/RPK support
153   - enabled: "${LWM2M_BS_CREDENTIALS_ENABLED:false}"
  153 + enabled: "${LWM2M_BS_CREDENTIALS_ENABLED:true}"
154 154 # Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore)
155 155 type: "${LWM2M_BS_CREDENTIALS_TYPE:PEM}"
156 156 # PEM server credentials
... ... @@ -169,15 +169,15 @@ transport:
169 169 store_file: "${LWM2M_BS_KEY_STORE:lwm2mserver.jks}"
170 170 # Password used to access the key store
171 171 store_password: "${LWM2M_BS_KEY_STORE_PASSWORD:server_ks_password}"
172   - # Password used to access the key
173   - key_password: "${LWM2M_BS_KEY_PASSWORD:server_key_password}"
174 172 # Key alias
175 173 key_alias: "${LWM2M_BS_KEY_ALIAS:bootstrap}"
  174 + # Password used to access the key
  175 + key_password: "${LWM2M_BS_KEY_PASSWORD:server_ks_password}"
176 176 security:
177 177 # X509 trust certificates
178 178 trust-credentials:
179 179 # Whether to load X509 trust certificates
180   - enabled: "${LWM2M_TRUST_CREDENTIALS_ENABLED:false}"
  180 + enabled: "${LWM2M_TRUST_CREDENTIALS_ENABLED:true}"
181 181 # Trust certificates store type (PEM - pem certificates file; KEYSTORE - java keystore)
182 182 type: "${LWM2M_TRUST_CREDENTIALS_TYPE:PEM}"
183 183 # PEM certificates
... ...