Fix io.netty.handler.ssl.SslHandler is not a @Sharable handler
This commit is contained in:
parent
b2d694f7ee
commit
b3dc441428
@ -15,12 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.transport.mqtt;
|
package org.thingsboard.server.transport.mqtt;
|
||||||
|
|
||||||
import com.google.common.io.Resources;
|
|
||||||
import io.netty.handler.ssl.SslHandler;
|
import io.netty.handler.ssl.SslHandler;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
@ -30,8 +28,8 @@ import org.thingsboard.server.common.msg.EncryptionUtil;
|
|||||||
import org.thingsboard.server.common.transport.TransportService;
|
import org.thingsboard.server.common.transport.TransportService;
|
||||||
import org.thingsboard.server.common.transport.TransportServiceCallback;
|
import org.thingsboard.server.common.transport.TransportServiceCallback;
|
||||||
import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse;
|
import org.thingsboard.server.common.transport.auth.ValidateDeviceCredentialsResponse;
|
||||||
import org.thingsboard.server.gen.transport.TransportProtos;
|
|
||||||
import org.thingsboard.server.common.transport.util.SslUtil;
|
import org.thingsboard.server.common.transport.util.SslUtil;
|
||||||
|
import org.thingsboard.server.gen.transport.TransportProtos;
|
||||||
|
|
||||||
import javax.net.ssl.KeyManager;
|
import javax.net.ssl.KeyManager;
|
||||||
import javax.net.ssl.KeyManagerFactory;
|
import javax.net.ssl.KeyManagerFactory;
|
||||||
@ -40,10 +38,7 @@ import javax.net.ssl.SSLEngine;
|
|||||||
import javax.net.ssl.TrustManager;
|
import javax.net.ssl.TrustManager;
|
||||||
import javax.net.ssl.TrustManagerFactory;
|
import javax.net.ssl.TrustManagerFactory;
|
||||||
import javax.net.ssl.X509TrustManager;
|
import javax.net.ssl.X509TrustManager;
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
|
||||||
import java.security.KeyStore;
|
import java.security.KeyStore;
|
||||||
import java.security.cert.CertificateEncodingException;
|
import java.security.cert.CertificateEncodingException;
|
||||||
import java.security.cert.CertificateException;
|
import java.security.cert.CertificateException;
|
||||||
@ -73,16 +68,16 @@ public class MqttSslHandlerProvider {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TransportService transportService;
|
private TransportService transportService;
|
||||||
|
|
||||||
private SslHandler sslHandler;
|
private SSLEngine sslEngine;
|
||||||
|
|
||||||
public SslHandler getSslHandler() {
|
public SslHandler getSslHandler() {
|
||||||
if (sslHandler == null) {
|
if (sslEngine == null) {
|
||||||
sslHandler = createSslHandler();
|
sslEngine = createSslEngine();
|
||||||
}
|
}
|
||||||
return sslHandler;
|
return new SslHandler(sslEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SslHandler createSslHandler() {
|
private SSLEngine createSslEngine() {
|
||||||
try {
|
try {
|
||||||
TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
TrustManagerFactory tmFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
|
||||||
KeyStore trustStore = KeyStore.getInstance(keyStoreType);
|
KeyStore trustStore = KeyStore.getInstance(keyStoreType);
|
||||||
@ -113,10 +108,10 @@ public class MqttSslHandlerProvider {
|
|||||||
sslEngine.setEnabledProtocols(sslEngine.getSupportedProtocols());
|
sslEngine.setEnabledProtocols(sslEngine.getSupportedProtocols());
|
||||||
sslEngine.setEnabledCipherSuites(sslEngine.getSupportedCipherSuites());
|
sslEngine.setEnabledCipherSuites(sslEngine.getSupportedCipherSuites());
|
||||||
sslEngine.setEnableSessionCreation(true);
|
sslEngine.setEnableSessionCreation(true);
|
||||||
return new SslHandler(sslEngine);
|
return sslEngine;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("Unable to set up SSL context. Reason: " + e.getMessage(), e);
|
log.error("Unable to set up SSL context. Reason: " + e.getMessage(), e);
|
||||||
throw new RuntimeException("Failed to get SSL handler", e);
|
throw new RuntimeException("Failed to get SSL engine", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user