Last active
April 26, 2018 11:42
-
-
Save gokhangirgin/ac8fdb8843a70a420982 to your computer and use it in GitHub Desktop.
OKHttp TLS 1.2 Android
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static OkHttpClient getTLSClient(){ | |
OkHttpClient myOkHttpClient = new OkHttpClient(); | |
if(TLS_1_2){ | |
//tls 1.2 | |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ | |
ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS) | |
.tlsVersions(TlsVersion.TLS_1_2) | |
.build(); | |
myOkHttpClient.setConnectionSpecs(Collections.singletonList(spec)); | |
} | |
else{ | |
myOkHttpClient.setSslSocketFactory(new YOSSLSocketFactory()); | |
} | |
myOkHttpClient.setHostnameVerifier(new HostnameVerifier() { | |
@Override | |
public boolean verify(String s, SSLSession sslSession) { | |
return true; | |
} | |
}); | |
} | |
return myOkHttpClient; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.IOException; | |
import java.net.InetAddress; | |
import java.net.Socket; | |
import java.net.UnknownHostException; | |
import java.security.KeyManagementException; | |
import java.security.NoSuchAlgorithmException; | |
import javax.net.ssl.SSLContext; | |
import javax.net.ssl.SSLSocket; | |
import javax.net.ssl.SSLSocketFactory; | |
public class YOSSLSocketFactory extends SSLSocketFactory { | |
private SSLContext sContext; | |
private SSLSocketFactory socketFactory; | |
public YOSSLSocketFactory() { | |
try { | |
sContext = SSLContext.getInstance("TLSv1.2"); | |
sContext.init(null, null, null); | |
socketFactory = sContext.getSocketFactory(); | |
} catch (NoSuchAlgorithmException e) { | |
e.printStackTrace(); | |
} catch (KeyManagementException e) { | |
e.printStackTrace(); | |
} | |
} | |
@Override | |
public Socket createSocket(Socket s, String host, int port, boolean autoClose) | |
throws IOException { | |
SSLSocket ss = (SSLSocket) socketFactory.createSocket(s, host, port, autoClose); | |
ss.setEnabledProtocols(ss.getSupportedProtocols()); | |
ss.setEnabledCipherSuites(ss.getSupportedCipherSuites()); | |
return ss; | |
} | |
@Override | |
public String[] getDefaultCipherSuites() { | |
return socketFactory.getDefaultCipherSuites(); | |
} | |
@Override | |
public String[] getSupportedCipherSuites() { | |
return socketFactory.getSupportedCipherSuites(); | |
} | |
@Override | |
public Socket createSocket(String host, int port) throws IOException, UnknownHostException { | |
SSLSocket ss = (SSLSocket) socketFactory.createSocket(host, port); | |
ss.setEnabledProtocols(ss.getSupportedProtocols()); | |
ss.setEnabledCipherSuites(ss.getSupportedCipherSuites()); | |
return ss; | |
} | |
@Override | |
public Socket createSocket(InetAddress host, int port) throws IOException { | |
SSLSocket ss = (SSLSocket) socketFactory.createSocket(host, port); | |
ss.setEnabledProtocols(ss.getSupportedProtocols()); | |
ss.setEnabledCipherSuites(ss.getSupportedCipherSuites()); | |
return ss; | |
} | |
@Override | |
public Socket createSocket(String host, int port, InetAddress localHost, int localPort) | |
throws IOException, UnknownHostException { | |
SSLSocket ss = (SSLSocket) socketFactory.createSocket(host, port, localHost, localPort); | |
ss.setEnabledProtocols(ss.getSupportedProtocols()); | |
ss.setEnabledCipherSuites(ss.getSupportedCipherSuites()); | |
return ss; | |
} | |
@Override | |
public Socket createSocket(InetAddress address, int port, InetAddress localAddress, | |
int localPort) throws IOException { | |
SSLSocket ss = (SSLSocket) socketFactory.createSocket(address, port, localAddress, localPort); | |
ss.setEnabledProtocols(ss.getSupportedProtocols()); | |
ss.setEnabledCipherSuites(ss.getSupportedCipherSuites()); | |
return ss; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Would this avoid the error: