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:
 | 
			
		||||
      # Enable/disable DTLS 1.2 support
 | 
			
		||||
      enabled: "${COAP_DTLS_ENABLED:false}"
 | 
			
		||||
      # RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
 | 
			
		||||
      retransmission_timeout: "${COAP_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
 | 
			
		||||
      # CoAP DTLS bind address
 | 
			
		||||
      bind_address: "${COAP_DTLS_BIND_ADDRESS:0.0.0.0}"
 | 
			
		||||
      # CoAP DTLS bind port
 | 
			
		||||
@ -751,6 +753,9 @@ transport:
 | 
			
		||||
  lwm2m:
 | 
			
		||||
    # Enable/disable lvm2m transport protocol.
 | 
			
		||||
    enabled: "${LWM2M_ENABLED:true}"
 | 
			
		||||
    dtls:
 | 
			
		||||
      # RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
 | 
			
		||||
      retransmission_timeout: "${LWM2M_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
 | 
			
		||||
    server:
 | 
			
		||||
      id: "${LWM2M_SERVER_ID:123}"
 | 
			
		||||
      bind_address: "${LWM2M_BIND_ADDRESS:0.0.0.0}"
 | 
			
		||||
 | 
			
		||||
@ -16,10 +16,8 @@
 | 
			
		||||
package org.thingsboard.server.coapserver;
 | 
			
		||||
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.eclipse.californium.elements.config.CertificateAuthenticationMode;
 | 
			
		||||
import org.eclipse.californium.elements.config.Configuration;
 | 
			
		||||
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.dtls.CertificateType;
 | 
			
		||||
import org.eclipse.californium.scandium.dtls.x509.SingleCertificateProvider;
 | 
			
		||||
@ -40,6 +38,13 @@ import java.net.InetSocketAddress;
 | 
			
		||||
import java.net.UnknownHostException;
 | 
			
		||||
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
 | 
			
		||||
@ConditionalOnProperty(prefix = "transport.coap.dtls", value = "enabled", havingValue = "true", matchIfMissing = false)
 | 
			
		||||
@Component
 | 
			
		||||
@ -51,6 +56,9 @@ public class TbCoapDtlsSettings {
 | 
			
		||||
    @Value("${transport.coap.dtls.bind_port}")
 | 
			
		||||
    private Integer port;
 | 
			
		||||
 | 
			
		||||
    @Value("${transport.coap.dtls.retransmission_timeout:9000}")
 | 
			
		||||
    private int dtlsRetransmissionTimeout;
 | 
			
		||||
 | 
			
		||||
    @Bean
 | 
			
		||||
    @ConfigurationProperties(prefix = "transport.coap.dtls.credentials")
 | 
			
		||||
    public SslCredentialsConfig coapDtlsCredentials() {
 | 
			
		||||
@ -82,8 +90,9 @@ public class TbCoapDtlsSettings {
 | 
			
		||||
        SslCredentials sslCredentials = this.coapDtlsCredentialsConfig.getCredentials();
 | 
			
		||||
        SslContextUtil.Credentials serverCredentials =
 | 
			
		||||
                new SslContextUtil.Credentials(sslCredentials.getPrivateKey(), null, sslCredentials.getCertificateChain());
 | 
			
		||||
        configBuilder.set(DtlsConfig.DTLS_ROLE, DtlsConfig.DtlsRole.SERVER_ONLY);
 | 
			
		||||
        configBuilder.set(DtlsConfig.DTLS_CLIENT_AUTHENTICATION_MODE, CertificateAuthenticationMode.WANTED);
 | 
			
		||||
        configBuilder.set(DTLS_CLIENT_AUTHENTICATION_MODE, WANTED);
 | 
			
		||||
        configBuilder.set(DTLS_RETRANSMISSION_TIMEOUT, dtlsRetransmissionTimeout, MILLISECONDS);
 | 
			
		||||
        configBuilder.set(DTLS_ROLE, SERVER_ONLY);
 | 
			
		||||
        configBuilder.setAdvancedCertificateVerifier(
 | 
			
		||||
                new TbCoapDtlsCertificateVerifier(
 | 
			
		||||
                        transportService,
 | 
			
		||||
 | 
			
		||||
@ -37,8 +37,12 @@ import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.PreDestroy;
 | 
			
		||||
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_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.RPK_OR_X509_CIPHER_SUITES;
 | 
			
		||||
import static org.thingsboard.server.transport.lwm2m.server.LwM2MNetworkConfig.getCoapConfig;
 | 
			
		||||
@ -88,10 +92,10 @@ public class LwM2MTransportBootstrapService {
 | 
			
		||||
        /* Create and Set DTLS Config */
 | 
			
		||||
        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_CIPHER_SUITES_ONLY, serverConfig.isRecommendedCiphers());
 | 
			
		||||
 | 
			
		||||
        dtlsConfig.set(DTLS_RETRANSMISSION_TIMEOUT, serverConfig.getDtlsRetransmissionTimeout(), MILLISECONDS);
 | 
			
		||||
        dtlsConfig.set(DTLS_ROLE, SERVER_ONLY);
 | 
			
		||||
        setServerWithCredentials(builder, dtlsConfig);
 | 
			
		||||
 | 
			
		||||
        /* Set DTLS Config */
 | 
			
		||||
 | 
			
		||||
@ -37,6 +37,10 @@ import java.util.List;
 | 
			
		||||
@ConfigurationProperties(prefix = "transport.lwm2m")
 | 
			
		||||
public class LwM2MTransportServerConfig implements LwM2MSecureServerConfig {
 | 
			
		||||
 | 
			
		||||
    @Getter
 | 
			
		||||
    @Value("${transport.lwm2m.dtls.retransmission_timeout:9000}")
 | 
			
		||||
    private int dtlsRetransmissionTimeout;
 | 
			
		||||
 | 
			
		||||
    @Getter
 | 
			
		||||
    @Value("${transport.lwm2m.timeout:}")
 | 
			
		||||
    private Long timeout;
 | 
			
		||||
 | 
			
		||||
@ -41,8 +41,12 @@ import org.thingsboard.server.transport.lwm2m.utils.LwM2mValueConverterImpl;
 | 
			
		||||
import javax.annotation.PreDestroy;
 | 
			
		||||
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_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_CCM_8;
 | 
			
		||||
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.setRegistrationStore(registrationStore);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /* Create DTLS 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_CIPHER_SUITES_ONLY, config.isRecommendedCiphers());
 | 
			
		||||
        dtlsConfig.set(DTLS_RETRANSMISSION_TIMEOUT, config.getDtlsRetransmissionTimeout(), MILLISECONDS);
 | 
			
		||||
        dtlsConfig.set(DTLS_ROLE, SERVER_ONLY);
 | 
			
		||||
 | 
			
		||||
        /*  Create credentials */
 | 
			
		||||
        this.setServerWithCredentials(builder, dtlsConfig);
 | 
			
		||||
 | 
			
		||||
@ -97,6 +97,8 @@ transport:
 | 
			
		||||
    dtls:
 | 
			
		||||
      # Enable/disable DTLS 1.2 support
 | 
			
		||||
      enabled: "${COAP_DTLS_ENABLED:false}"
 | 
			
		||||
      # RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
 | 
			
		||||
      retransmission_timeout: "${COAP_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
 | 
			
		||||
      # CoAP DTLS bind address
 | 
			
		||||
      bind_address: "${COAP_DTLS_BIND_ADDRESS:0.0.0.0}"
 | 
			
		||||
      # CoAP DTLS bind port
 | 
			
		||||
 | 
			
		||||
@ -106,6 +106,9 @@ transport:
 | 
			
		||||
  lwm2m:
 | 
			
		||||
    # Enable/disable lvm2m transport protocol.
 | 
			
		||||
    enabled: "${LWM2M_ENABLED:true}"
 | 
			
		||||
    dtls:
 | 
			
		||||
      # RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000
 | 
			
		||||
      retransmission_timeout: "${LWM2M_DTLS_RETRANSMISSION_TIMEOUT_MS:9000}"
 | 
			
		||||
    server:
 | 
			
		||||
      id: "${LWM2M_SERVER_ID:123}"
 | 
			
		||||
      bind_address: "${LWM2M_BIND_ADDRESS:0.0.0.0}"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user