mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-20 14:54:31 +01:00
extremely ugly hack to fix bad behaviour of java6 when dealing with SSL
This commit is contained in:
parent
137da0326d
commit
f791329ddc
@ -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();
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user