Merge pull request #7232 from thingsboard/DTLS_RETRANSMISSION_TIMEOUT
[3.5] dtls retransmission timeout
This commit is contained in:
commit
5a3a121997
@ -714,6 +714,8 @@ transport:
|
|||||||
dtls:
|
dtls:
|
||||||
# Enable/disable DTLS 1.2 support
|
# Enable/disable DTLS 1.2 support
|
||||||
enabled: "${COAP_DTLS_ENABLED:false}"
|
enabled: "${COAP_DTLS_ENABLED:false}"
|
||||||
|
# RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
|
||||||
|
retransmission_timeout: "${COAP_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
|
||||||
# CoAP DTLS bind address
|
# CoAP DTLS bind address
|
||||||
bind_address: "${COAP_DTLS_BIND_ADDRESS:0.0.0.0}"
|
bind_address: "${COAP_DTLS_BIND_ADDRESS:0.0.0.0}"
|
||||||
# CoAP DTLS bind port
|
# CoAP DTLS bind port
|
||||||
@ -751,6 +753,9 @@ transport:
|
|||||||
lwm2m:
|
lwm2m:
|
||||||
# Enable/disable lvm2m transport protocol.
|
# Enable/disable lvm2m transport protocol.
|
||||||
enabled: "${LWM2M_ENABLED:true}"
|
enabled: "${LWM2M_ENABLED:true}"
|
||||||
|
dtls:
|
||||||
|
# RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
|
||||||
|
retransmission_timeout: "${LWM2M_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
|
||||||
server:
|
server:
|
||||||
id: "${LWM2M_SERVER_ID:123}"
|
id: "${LWM2M_SERVER_ID:123}"
|
||||||
bind_address: "${LWM2M_BIND_ADDRESS:0.0.0.0}"
|
bind_address: "${LWM2M_BIND_ADDRESS:0.0.0.0}"
|
||||||
|
|||||||
@ -16,10 +16,8 @@
|
|||||||
package org.thingsboard.server.coapserver;
|
package org.thingsboard.server.coapserver;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.eclipse.californium.elements.config.CertificateAuthenticationMode;
|
|
||||||
import org.eclipse.californium.elements.config.Configuration;
|
import org.eclipse.californium.elements.config.Configuration;
|
||||||
import org.eclipse.californium.elements.util.SslContextUtil;
|
import org.eclipse.californium.elements.util.SslContextUtil;
|
||||||
import org.eclipse.californium.scandium.config.DtlsConfig;
|
|
||||||
import org.eclipse.californium.scandium.config.DtlsConnectorConfig;
|
import org.eclipse.californium.scandium.config.DtlsConnectorConfig;
|
||||||
import org.eclipse.californium.scandium.dtls.CertificateType;
|
import org.eclipse.californium.scandium.dtls.CertificateType;
|
||||||
import org.eclipse.californium.scandium.dtls.x509.SingleCertificateProvider;
|
import org.eclipse.californium.scandium.dtls.x509.SingleCertificateProvider;
|
||||||
@ -40,6 +38,13 @@ import java.net.InetSocketAddress;
|
|||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||||
|
import static org.eclipse.californium.elements.config.CertificateAuthenticationMode.WANTED;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_CLIENT_AUTHENTICATION_MODE;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RETRANSMISSION_TIMEOUT;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_ROLE;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DtlsRole.SERVER_ONLY;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@ConditionalOnProperty(prefix = "transport.coap.dtls", value = "enabled", havingValue = "true", matchIfMissing = false)
|
@ConditionalOnProperty(prefix = "transport.coap.dtls", value = "enabled", havingValue = "true", matchIfMissing = false)
|
||||||
@Component
|
@Component
|
||||||
@ -51,6 +56,9 @@ public class TbCoapDtlsSettings {
|
|||||||
@Value("${transport.coap.dtls.bind_port}")
|
@Value("${transport.coap.dtls.bind_port}")
|
||||||
private Integer port;
|
private Integer port;
|
||||||
|
|
||||||
|
@Value("${transport.coap.dtls.retransmission_timeout:9000}")
|
||||||
|
private int dtlsRetransmissionTimeout;
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConfigurationProperties(prefix = "transport.coap.dtls.credentials")
|
@ConfigurationProperties(prefix = "transport.coap.dtls.credentials")
|
||||||
public SslCredentialsConfig coapDtlsCredentials() {
|
public SslCredentialsConfig coapDtlsCredentials() {
|
||||||
@ -82,8 +90,9 @@ public class TbCoapDtlsSettings {
|
|||||||
SslCredentials sslCredentials = this.coapDtlsCredentialsConfig.getCredentials();
|
SslCredentials sslCredentials = this.coapDtlsCredentialsConfig.getCredentials();
|
||||||
SslContextUtil.Credentials serverCredentials =
|
SslContextUtil.Credentials serverCredentials =
|
||||||
new SslContextUtil.Credentials(sslCredentials.getPrivateKey(), null, sslCredentials.getCertificateChain());
|
new SslContextUtil.Credentials(sslCredentials.getPrivateKey(), null, sslCredentials.getCertificateChain());
|
||||||
configBuilder.set(DtlsConfig.DTLS_ROLE, DtlsConfig.DtlsRole.SERVER_ONLY);
|
configBuilder.set(DTLS_CLIENT_AUTHENTICATION_MODE, WANTED);
|
||||||
configBuilder.set(DtlsConfig.DTLS_CLIENT_AUTHENTICATION_MODE, CertificateAuthenticationMode.WANTED);
|
configBuilder.set(DTLS_RETRANSMISSION_TIMEOUT, dtlsRetransmissionTimeout, MILLISECONDS);
|
||||||
|
configBuilder.set(DTLS_ROLE, SERVER_ONLY);
|
||||||
configBuilder.setAdvancedCertificateVerifier(
|
configBuilder.setAdvancedCertificateVerifier(
|
||||||
new TbCoapDtlsCertificateVerifier(
|
new TbCoapDtlsCertificateVerifier(
|
||||||
transportService,
|
transportService,
|
||||||
|
|||||||
@ -37,8 +37,12 @@ import javax.annotation.PostConstruct;
|
|||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
|
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||||
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CIPHER_SUITES_ONLY;
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CIPHER_SUITES_ONLY;
|
||||||
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CURVES_ONLY;
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CURVES_ONLY;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RETRANSMISSION_TIMEOUT;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_ROLE;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DtlsRole.SERVER_ONLY;
|
||||||
import static org.thingsboard.server.transport.lwm2m.server.DefaultLwM2mTransportService.PSK_CIPHER_SUITES;
|
import static org.thingsboard.server.transport.lwm2m.server.DefaultLwM2mTransportService.PSK_CIPHER_SUITES;
|
||||||
import static org.thingsboard.server.transport.lwm2m.server.DefaultLwM2mTransportService.RPK_OR_X509_CIPHER_SUITES;
|
import static org.thingsboard.server.transport.lwm2m.server.DefaultLwM2mTransportService.RPK_OR_X509_CIPHER_SUITES;
|
||||||
import static org.thingsboard.server.transport.lwm2m.server.LwM2MNetworkConfig.getCoapConfig;
|
import static org.thingsboard.server.transport.lwm2m.server.LwM2MNetworkConfig.getCoapConfig;
|
||||||
@ -88,10 +92,10 @@ public class LwM2MTransportBootstrapService {
|
|||||||
/* Create and Set DTLS Config */
|
/* Create and Set DTLS Config */
|
||||||
DtlsConnectorConfig.Builder dtlsConfig = new DtlsConnectorConfig.Builder(getCoapConfig(bootstrapConfig.getPort(), bootstrapConfig.getSecurePort(), serverConfig));
|
DtlsConnectorConfig.Builder dtlsConfig = new DtlsConnectorConfig.Builder(getCoapConfig(bootstrapConfig.getPort(), bootstrapConfig.getSecurePort(), serverConfig));
|
||||||
|
|
||||||
dtlsConfig.set(DtlsConfig.DTLS_ROLE, DtlsConfig.DtlsRole.SERVER_ONLY);
|
|
||||||
dtlsConfig.set(DTLS_RECOMMENDED_CURVES_ONLY, serverConfig.isRecommendedSupportedGroups());
|
dtlsConfig.set(DTLS_RECOMMENDED_CURVES_ONLY, serverConfig.isRecommendedSupportedGroups());
|
||||||
dtlsConfig.set(DTLS_RECOMMENDED_CIPHER_SUITES_ONLY, serverConfig.isRecommendedCiphers());
|
dtlsConfig.set(DTLS_RECOMMENDED_CIPHER_SUITES_ONLY, serverConfig.isRecommendedCiphers());
|
||||||
|
dtlsConfig.set(DTLS_RETRANSMISSION_TIMEOUT, serverConfig.getDtlsRetransmissionTimeout(), MILLISECONDS);
|
||||||
|
dtlsConfig.set(DTLS_ROLE, SERVER_ONLY);
|
||||||
setServerWithCredentials(builder, dtlsConfig);
|
setServerWithCredentials(builder, dtlsConfig);
|
||||||
|
|
||||||
/* Set DTLS Config */
|
/* Set DTLS Config */
|
||||||
|
|||||||
@ -37,6 +37,10 @@ import java.util.List;
|
|||||||
@ConfigurationProperties(prefix = "transport.lwm2m")
|
@ConfigurationProperties(prefix = "transport.lwm2m")
|
||||||
public class LwM2MTransportServerConfig implements LwM2MSecureServerConfig {
|
public class LwM2MTransportServerConfig implements LwM2MSecureServerConfig {
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Value("${transport.lwm2m.dtls.retransmission_timeout:9000}")
|
||||||
|
private int dtlsRetransmissionTimeout;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@Value("${transport.lwm2m.timeout:}")
|
@Value("${transport.lwm2m.timeout:}")
|
||||||
private Long timeout;
|
private Long timeout;
|
||||||
|
|||||||
@ -41,8 +41,12 @@ import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
|
|||||||
import javax.annotation.PreDestroy;
|
import javax.annotation.PreDestroy;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
|
import static java.util.concurrent.TimeUnit.MILLISECONDS;
|
||||||
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CIPHER_SUITES_ONLY;
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CIPHER_SUITES_ONLY;
|
||||||
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CURVES_ONLY;
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RECOMMENDED_CURVES_ONLY;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_RETRANSMISSION_TIMEOUT;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DTLS_ROLE;
|
||||||
|
import static org.eclipse.californium.scandium.config.DtlsConfig.DtlsRole.SERVER_ONLY;
|
||||||
import static org.eclipse.californium.scandium.dtls.cipher.CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256;
|
import static org.eclipse.californium.scandium.dtls.cipher.CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256;
|
||||||
import static org.eclipse.californium.scandium.dtls.cipher.CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8;
|
import static org.eclipse.californium.scandium.dtls.cipher.CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8;
|
||||||
import static org.eclipse.californium.scandium.dtls.cipher.CipherSuite.TLS_PSK_WITH_AES_128_CBC_SHA256;
|
import static org.eclipse.californium.scandium.dtls.cipher.CipherSuite.TLS_PSK_WITH_AES_128_CBC_SHA256;
|
||||||
@ -127,13 +131,13 @@ public class DefaultLwM2mTransportService implements LwM2MTransportService {
|
|||||||
builder.setSecurityStore(securityStore);
|
builder.setSecurityStore(securityStore);
|
||||||
builder.setRegistrationStore(registrationStore);
|
builder.setRegistrationStore(registrationStore);
|
||||||
|
|
||||||
|
|
||||||
/* Create DTLS Config */
|
/* Create DTLS Config */
|
||||||
DtlsConnectorConfig.Builder dtlsConfig = new DtlsConnectorConfig.Builder(getCoapConfig(config.getPort(), config.getSecurePort(), config));
|
DtlsConnectorConfig.Builder dtlsConfig = new DtlsConnectorConfig.Builder(getCoapConfig(config.getPort(), config.getSecurePort(), config));
|
||||||
|
|
||||||
dtlsConfig.set(DtlsConfig.DTLS_ROLE, DtlsConfig.DtlsRole.SERVER_ONLY);
|
|
||||||
dtlsConfig.set(DTLS_RECOMMENDED_CURVES_ONLY, config.isRecommendedSupportedGroups());
|
dtlsConfig.set(DTLS_RECOMMENDED_CURVES_ONLY, config.isRecommendedSupportedGroups());
|
||||||
dtlsConfig.set(DTLS_RECOMMENDED_CIPHER_SUITES_ONLY, config.isRecommendedCiphers());
|
dtlsConfig.set(DTLS_RECOMMENDED_CIPHER_SUITES_ONLY, config.isRecommendedCiphers());
|
||||||
|
dtlsConfig.set(DTLS_RETRANSMISSION_TIMEOUT, config.getDtlsRetransmissionTimeout(), MILLISECONDS);
|
||||||
|
dtlsConfig.set(DTLS_ROLE, SERVER_ONLY);
|
||||||
|
|
||||||
/* Create credentials */
|
/* Create credentials */
|
||||||
this.setServerWithCredentials(builder, dtlsConfig);
|
this.setServerWithCredentials(builder, dtlsConfig);
|
||||||
|
|||||||
@ -97,6 +97,8 @@ transport:
|
|||||||
dtls:
|
dtls:
|
||||||
# Enable/disable DTLS 1.2 support
|
# Enable/disable DTLS 1.2 support
|
||||||
enabled: "${COAP_DTLS_ENABLED:false}"
|
enabled: "${COAP_DTLS_ENABLED:false}"
|
||||||
|
# RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
|
||||||
|
retransmission_timeout: "${COAP_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
|
||||||
# CoAP DTLS bind address
|
# CoAP DTLS bind address
|
||||||
bind_address: "${COAP_DTLS_BIND_ADDRESS:0.0.0.0}"
|
bind_address: "${COAP_DTLS_BIND_ADDRESS:0.0.0.0}"
|
||||||
# CoAP DTLS bind port
|
# CoAP DTLS bind port
|
||||||
|
|||||||
@ -106,6 +106,9 @@ transport:
|
|||||||
lwm2m:
|
lwm2m:
|
||||||
# Enable/disable lvm2m transport protocol.
|
# Enable/disable lvm2m transport protocol.
|
||||||
enabled: "${LWM2M_ENABLED:true}"
|
enabled: "${LWM2M_ENABLED:true}"
|
||||||
|
dtls:
|
||||||
|
# RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
|
||||||
|
retransmission_timeout: "${LWM2M_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
|
||||||
server:
|
server:
|
||||||
id: "${LWM2M_SERVER_ID:123}"
|
id: "${LWM2M_SERVER_ID:123}"
|
||||||
bind_address: "${LWM2M_BIND_ADDRESS:0.0.0.0}"
|
bind_address: "${LWM2M_BIND_ADDRESS:0.0.0.0}"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user