diff --git a/app/src/cc/arduino/packages/uploaders/HttpUploader.java b/app/src/cc/arduino/packages/uploaders/HttpUploader.java index cd50a08a2..f159f0349 100644 --- a/app/src/cc/arduino/packages/uploaders/HttpUploader.java +++ b/app/src/cc/arduino/packages/uploaders/HttpUploader.java @@ -16,6 +16,7 @@ import processing.app.debug.RunnerException; import processing.app.debug.TargetPlatform; import processing.app.helpers.PreferencesMap; +import javax.net.ssl.SSLSocket; import java.io.*; import java.net.InetSocketAddress; import java.net.Socket; @@ -90,6 +91,10 @@ public class HttpUploader extends Uploader { try { socket = new Socket(); socket.connect(new InetSocketAddress(ipAddress, 9876), 5000); + socket = new EasySSLProtocolSocketFactory().createSocket(socket, ipAddress, 9876, true); + SSLSocket sslSocket = (SSLSocket) socket; + sslSocket.setEnabledProtocols(EasySSLProtocolSocketFactory.SSL_PROTOCOLS); + sslSocket.setEnabledCipherSuites(EasySSLProtocolSocketFactory.SSL_CYPHER_SUITES); OutputStreamWriter osw = new OutputStreamWriter(socket.getOutputStream()); osw.write(uploadRequest.toString()); osw.flush(); diff --git a/app/src/processing/app/debug/EasySSLProtocolSocketFactory.java b/app/src/processing/app/debug/EasySSLProtocolSocketFactory.java index 958972469..394a5dddf 100644 --- a/app/src/processing/app/debug/EasySSLProtocolSocketFactory.java +++ b/app/src/processing/app/debug/EasySSLProtocolSocketFactory.java @@ -97,6 +97,8 @@ public class EasySSLProtocolSocketFactory implements SecureProtocolSocketFactory * Log object for this class. */ private static final Log LOG = LogFactory.getLog(EasySSLProtocolSocketFactory.class); + public static final String[] SSL_PROTOCOLS = {"SSLv3", "TLSv1"}; + public static final String[] SSL_CYPHER_SUITES = {"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "TLS_RSA_WITH_AES_128_CBC_SHA", "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_RSA_WITH_AES_128_CBC_SHA", "TLS_DHE_DSS_WITH_AES_128_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA", "TLS_ECDHE_RSA_WITH_RC4_128_SHA", "SSL_RSA_WITH_RC4_128_SHA", "TLS_ECDH_ECDSA_WITH_RC4_128_SHA", "TLS_ECDH_RSA_WITH_RC4_128_SHA", "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA", "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA", "SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA", "SSL_RSA_WITH_RC4_128_MD5", "TLS_EMPTY_RENEGOTIATION_INFO_SCSV"}; private SSLContext sslcontext = null; @@ -188,9 +190,11 @@ public class EasySSLProtocolSocketFactory implements SecureProtocolSocketFactory socket.bind(localaddr); socket.connect(remoteaddr, timeout); } + SSLSocket sslSocket = (SSLSocket) socket; - String[] protocolsWithoutSSLv2Hello = {"SSLv3", "TLSv1"}; - sslSocket.setEnabledProtocols(protocolsWithoutSSLv2Hello); + sslSocket.setEnabledProtocols(SSL_PROTOCOLS); + sslSocket.setEnabledCipherSuites(SSL_CYPHER_SUITES); + return socket; }