question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

SSLProtocolException: SSL handshake aborted - on android 4.4 & below

See original GitHub issue

Certificate Pinning on iOS and newer android versions works fine, but when i tested under android 4.4 (and below) i got this from the requests:

javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x6e494dd8: Failure in SSL library, usually a protocol error
error: 1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:744 0x6895bf10:0x00000000)

I was able to resolve the issues for android 4.4 by adding this to MainApplication.java:

import javax.net.ssl.SSLContext;
import com.google.android.gms.security.ProviderInstaller;

under the onCreate method:

 try {
            ProviderInstaller.installIfNeeded(getApplicationContext());
            SSLContext sslContext;
            sslContext = SSLContext.getInstance("TLSv1.2");
            sslContext.init(null, null, null);
            sslContext.createSSLEngine();
        } catch (Exception e) {
            e.printStackTrace();
        }

but then it would crash on android 4.2/4.3 devices (didn’t test other versions yet) when i run adb logcat *:E (android 4.2 in this case) i got this:

E/unknown:OkHttpClientProvider( 3353): Error while enabling TLS 1.2
E/unknown:OkHttpClientProvider( 3353): java.lang.IllegalStateException: Unable to extract the trust manager on AndroidPlatform, sslSocketFactory is class com.facebook.react.modules.network.TLSSocketFactory
E/unknown:OkHttpClientProvider( 3353): 	at okhttp3.internal.platform.Platform.buildCertificateChainCleaner(Platform.java:182)
E/unknown:OkHttpClientProvider( 3353): 	at okhttp3.OkHttpClient$Builder.sslSocketFactory(OkHttpClient.java:768)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.modules.network.OkHttpClientProvider.enableTls12OnPreLollipop(OkHttpClientProvider.java:105)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.modules.network.OkHttpClientProvider.createClientBuilder(OkHttpClientProvider.java:75)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.modules.network.OkHttpClientProvider.createClient(OkHttpClientProvider.java:51)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.modules.fresco.FrescoModule.getDefaultConfigBuilder(FrescoModule.java:143)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.modules.fresco.FrescoModule.getDefaultConfig(FrescoModule.java:130)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.modules.fresco.FrescoModule.initialize(FrescoModule.java:93)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.bridge.ModuleHolder.doInitialize(ModuleHolder.java:222)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.bridge.ModuleHolder.markInitializable(ModuleHolder.java:97)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.bridge.NativeModuleRegistry.notifyJSInstanceInitialized(NativeModuleRegistry.java:102)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.bridge.CatalystInstanceImpl$2.run(CatalystInstanceImpl.java:441)
E/unknown:OkHttpClientProvider( 3353): 	at android.os.Handler.handleCallback(Handler.java:730)
E/unknown:OkHttpClientProvider( 3353): 	at android.os.Handler.dispatchMessage(Handler.java:92)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:26)
E/unknown:OkHttpClientProvider( 3353): 	at android.os.Looper.loop(Looper.java:176)
E/unknown:OkHttpClientProvider( 3353): 	at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:225)
E/unknown:OkHttpClientProvider( 3353): 	at java.lang.Thread.run(Thread.java:841)
E/dalvikvm( 3353): Could not find class 'android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction', referenced from method androidx.core.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityActionCompat.<init>
E/dalvikvm( 3353): Could not find class 'android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction', referenced from method androidx.core.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityActionCompat.getId
E/dalvikvm( 3353): Could not find class 'android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction', referenced from method androidx.core.view.accessibility.AccessibilityNodeInfoCompat$AccessibilityActionCompat.getLabel
E/EnterpriseContainerManager( 2348): ContainerPolicy Service is not yet ready!!!
E/AndroidRuntime( 3353): FATAL EXCEPTION: OkHttp Dispatcher
E/AndroidRuntime( 3353): java.lang.NoClassDefFoundError: java.nio.charset.StandardCharsets
E/AndroidRuntime( 3353): 	at com.toyberman.RNSslPinningModule$2.onResponse(RNSslPinningModule.java:211)
E/AndroidRuntime( 3353): 	at okhttp3.RealCall$AsyncCall.execute(RealCall.java:206)
E/AndroidRuntime( 3353): 	at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
E/AndroidRuntime( 3353): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
E/AndroidRuntime( 3353): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
E/AndroidRuntime( 3353): 	at java.lang.Thread.run(Thread.java:841)
E/android.os.Debug( 2348): !@Dumpstate > sdumpstate -k -t -z -d -o /data/log/dumpstate_app_error
E/Watchdog( 2348): !@Sync 524
E/Launcher( 2732): Error finding setting, default accessibility to not found: accessibility_enabled
E/InputDispatcher( 2348): channel ~ Channel is unrecoverably broken and will be disposed!
E/ViewRootImpl( 2348): sendUserActionEvent() mView == null
E/EnterpriseContainerManager( 2348): ContainerPolicy Service is not yet ready!!!
E/SQLiteLog( 3577): (1) duplicate column name: extraData
E/BadgeProvider( 3577): onUpgarde :: Trying to add Column :: Exception already exists:duplicate column name: extraData (code 1): , while compiling: ALTER TABLE apps ADD COLUMN extraData TEXT DEFAULT base_extra_badge;
E/ActivityThread( 3595): Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@42699ed8 that was originally bound here
E/ActivityThread( 3595): android.app.ServiceConnectionLeaked: Service com.android.exchange.ExchangeService has leaked ServiceConnection com.android.emailcommon.service.ServiceProxy$ProxyConnection@42699ed8 that was originally bound here
E/ActivityThread( 3595): 	at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:979)
E/ActivityThread( 3595): 	at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873)
E/ActivityThread( 3595): 	at android.app.ContextImpl.bindServiceAsUser(ContextImpl.java:1833)
E/ActivityThread( 3595): 	at android.app.ContextImpl.bindService(ContextImpl.java:1821)
E/ActivityThread( 3595): 	at android.content.ContextWrapper.bindService(ContextWrapper.java:503)
E/ActivityThread( 3595): 	at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:158)
E/ActivityThread( 3595): 	at com.android.emailcommon.service.ServiceProxy.setTask(ServiceProxy.java:146)
E/ActivityThread( 3595): 	at com.android.emailcommon.service.AccountServiceProxy.restoreAccountsIfNeeded(AccountServiceProxy.java:135)
E/ActivityThread( 3595): 	at com.android.exchange.ExchangeService$11.run(ExchangeService.java:4645)
E/ActivityThread( 3595): 	at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:1053)
E/ActivityThread( 3595): 	at com.android.emailcommon.utility.Utility$2.doInBackground(Utility.java:1050)
E/ActivityThread( 3595): 	at android.os.AsyncTask$2.call(AsyncTask.java:287)
E/ActivityThread( 3595): 	at java.util.concurrent.FutureTask.run(FutureTask.java:234)
E/ActivityThread( 3595): 	at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
E/ActivityThread( 3595): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
E/ActivityThread( 3595): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
E/ActivityThread( 3595): 	at java.lang.Thread.run(Thread.java:841)
E/Mms/MessageUtils( 3607): setCountryDetector : update country detector info
E/Mms/MessageUtils( 3607): updateCountryIso : update country iso info
E/WifiStateMachine( 2348): result: 0, Moved BSSID: c0:56:27:77:94:29
E/Watchdog( 2348): !@Sync 525

react-native version is 0.61.5 react-native-ssl-pinning is 1.4.5

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

1reaction
varaloocommented, Jul 14, 2020

Hey, thanks for providing a special branch. I just tried it on the 4.2 & 4.3 devices that i have and it works now.

0reactions
MaxToybermancommented, Jul 6, 2020

Hi @varaloo please try this branch : https://github.com/MaxToyberman/react-native-ssl-pinning/tree/Android4Support

Please let me know if it worked for you.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Android 4.4.2 SSL handshake aborted - java - Stack Overflow
Appears to support TLS 1.0, TLS 1.1 and TLS 1.2. Under handshake simulation it suggests TLS 1.2 w/ ciper; TLS_RSA_WITH_RC4_128_SHA for android ......
Read more >
SSLHandshakeException on Android 4.4 and lower - Mobikul
The issue is mostly encountered in devices below lollipop i.e, KitKat and below devices. javax.net.ssl.SSLHandshakeException: javax.net.ssl.
Read more >
javax.net.ssl.SSLHandshakeException: SSL handshake aborted
In Android 4.x we are observing SSL handshake aborted for subscription initialization. To Reproduce Can be reproduced by using any kitkat (4.4.X) ...
Read more >
How do I enable TLS 1.2 for ArcGIS Runtime SDK for Android?
SSLException: SSL handshake aborted. To support TLS 1.2 on devices running Android 4.4 (API 19), users must add code to their application ...
Read more >
Java – Android 4.4.2 SSL handshake aborted - iTecNote
Code works on my Genymotion Android 4.4.4 emulator but not on the device i'm ... SSLProtocolException: SSL handshake aborted: ssl=0x6abff398: Failure in SSL ......
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found