Commit 483a69fed1981ee07e14b9b00f15f6f515828b82
1 parent
330ff094
Use SSL credentials configuration to setup HTTPS. Enable Lwm2m credentials by default.
Showing
12 changed files
with
225 additions
and
65 deletions
... | ... | @@ -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(); | ... | ... |
No preview for this file type
... | ... | @@ -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!"); | ... | ... |
... | ... | @@ -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 | ... | ... |