SSLProtocolException: SSL handshake aborted - on android 4.4 & below
See original GitHub issueCertificate 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:
- Created 3 years ago
- Comments:8 (4 by maintainers)
Top 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 >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
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.
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.