So the solution was to just renew the SSL certificate of my VPS server using a different company so it would cause my android device to use a different root certificate to certify it, and everything started working again.
The objective of Let’s Encrypt and the ACME protocol is to make it possible to set up an HTTPS server and have it automatically obtain a browser-trusted certificate, without any human intervention. This is accomplished by running a certificate management agent on the web server.
W/GLSActivity( 2504): fwb: BadAuthentication
W/GLSActivity( 2504): at fvp.acom.google.android.gms@12685006@12.6.85 (020300-197041431):13)
W/GLSActivity( 2504): at fvo.acom.google.android.gms@12685006@12.6.85 (020300-197041431):2)
W/GLSActivity( 2504): at fvo.ecom.google.android.gms@12685006@12.6.85 (020300-197041431):6)
W/GLSActivity( 2504): at fvn.acom.google.android.gms@12685006@12.6.85 (020300-197041431):1)
W/GLSActivity( 2504): at fxk.getAuthTokencom.google.android.gms@12685006@12.6.85 (020300-197041431):7)
W/GLSActivity( 2504): at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:196)
W/GLSActivity( 2504): at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113)
W/GLSActivity( 2504): at android.os.Binder.transact(Binder.java:380)
W/GLSActivity( 2504): at dbf.onTransactcom.google.android.gms@12685006@12.6.85 (020300-197041431):3)
W/GLSActivity( 2504): at android.os.Binder.execTransact(Binder.java:446)
W/PlayEventLogger(22506): deferring log upload because couldn't retrieve auth token
W/System.err(13667): java.net.SocketTimeoutExceptionjava.net.SocketTimeoutException
W/System.err(13667): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
W/System.err(13667): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
W/System.err(13667): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
W/System.err(13667): at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
W/System.err(13667): at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
W/System.err(13667): at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
W/System.err(13667): at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
W/System.err(13667): at at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
W/System.err(13667): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
W/System.err(13667): org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
W/System.err(13667): at at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
W/System.err(13667): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
W/System.err(13667): org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121) at
W/System.err(13667): org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103) at
W/System.err(13667): org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err(13667): at at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.executeWithTimeout(HttpClientWrapper.java:316)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.access$0(HttpClientWrapper.java:314)org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
W/System.err(13667): at
W/System.err(13667): org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174) at
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper$ExecuteHelper.run(HttpClientWrapper.java:215)
W/System.err(13667): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)W/System.err(13667): at
W/System.err(13667): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(13667): at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
W/System.err(13667): at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
W/System.err(13667): at java.lang.Thread.run(Thread.java:818)
W/System.err(13667): org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
W/System.err(13667): at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
W/System.err(13667): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.executeWithTimeout(HttpClientWrapper.java:316)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.access$0(HttpClientWrapper.java:314)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper$ExecuteHelper.run(HttpClientWrapper.java:215)
W/System.err(13667): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
W/System.err(13667): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(13667): at java.lang.Thread.run(Thread.java:818)
D/TelephonyIcons( 1473): getDataActivity, sub=0, activity=2
I/[SystemUI]StatusBar.NetworkController( 1473): refreshViews 1 connected={ data } level=1 mobileLabel=Verizon wifiLabel= emergencyOnly=false
I/[SystemUI]StatusBar.NetworkController( 1473): refreshViews 2 mPhoneSignalIconId=com.android.systemui:drawable/stat_sys_signal_bar5_1_fully mDataSignalIconId=com.android.systemui:drawable/stat_sys_signal_bar5_1_fully mDataTypeIconId=(null) mDataActivity=2 mLGNetworkController.mLGDataTypeIconId=com.android.systemui:drawable/stat_sys_data_connected_4g_nodata_vzw mLGNetworkController.mLGDataActivityIconId=com.android.systemui:drawable/stat_sys_data_fully_default_out_vzw
I/[SystemUI]StatusBar.NetworkController( 1473): refreshViews 3 mAirplaneMode=false mNoSimIconId=(null) mWifiIconId=(null) mWifiActivityIconId=com.android.systemui:drawable/stat_sys_wifi_none_vzw
W/System.err(13667): java.net.SocketTimeoutException
W/System.err(13667): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
W/System.err(13667): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
W/System.err(13667): at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
W/System.err(13667): at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
W/System.err(13667): at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
W/System.err(13667): at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
W/System.err(13667): at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
W/System.err(13667): at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
W/System.err(13667): at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
W/System.err(13667): at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
W/System.err(13667): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err(13667): java.net.SocketTimeoutException
W/System.err(13667): at java.net.PlainSocketImpl.read(PlainSocketImpl.java:488)
W/System.err(13667): at java.net.PlainSocketImpl.access$000(PlainSocketImpl.java:37)
W/System.err(13667): at at java.net.PlainSocketImpl$PlainSocketInputStream.read(PlainSocketImpl.java:237)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:103)
W/System.err(13667): anywheresoftware.b4a.http.HttpClientWrapper.executeWithTimeout(HttpClientWrapper.java:316)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.access$0(HttpClientWrapper.java:314)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper$ExecuteHelper.run(HttpClientWrapper.java:215)
W/System.err(13667): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
W/System.err(13667): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(13667): at java.lang.Thread.run(Thread.java:818)
W/System.err(13667): at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:191)
W/System.err(13667): at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:82)
W/System.err(13667): at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:174)
W/System.err(13667): at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:180)
W/System.err(13667): at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:235)
W/System.err(13667): at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:259)
W/System.err(13667): at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:279)
W/System.err(13667): at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:121)
W/System.err(13667): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
W/System.err(13667): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.executeWithTimeout(HttpClientWrapper.java:316)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper.access$0(HttpClientWrapper.java:314)
W/System.err(13667): at anywheresoftware.b4a.http.HttpClientWrapper$ExecuteHelper.run(HttpClientWrapper.java:215)
W/System.err(13667): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
W/System.err(13667): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(13667): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(13667): at java.lang.Thread.run(Thread.java:818)
D/WindowManager( 938): [PWM]1.notifyNavigationBarColor => mLastColorNavigationBar=0x0
I/[SystemUI]NavigationThemeResource( 1473): notify navigation bar color(0x0)
D/InputDispatcher( 938): Focus left window: Window{18dd9411 u0 odp.eljaydelivery/odp.eljaydelivery.main}
D/InputDispatcher( 938): Focus entered window: Window{3f3c236e u0 odp.eljaydelivery/odp.eljaydelivery.main}
D/InputDispatcher( 938): Window went away: Window{18dd9411 u0 odp.eljaydelivery/odp.eljaydelivery.main}
W/InputMethodManagerService( 938): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@1755b449 attribute=null, token = android.os.BinderProxy@2359ae9
I/B4A (13667): ~l021638416:GetMyIPCompletion failed: java.net.SocketTimeoutException
I/B4A (13667): ~l122490369:************ Main.GetProducts_LatestUploadHandler: Started
I/B4A (13667): ~l222490391:************ Main.GetProducts_LatestUploadHandler: Finished
I/[SystemUI]StatusBar.NetworkController( 1473): onDataActivity: direction=3
D/TelephonyIcons( 1473): getDataActivity, sub=0, activity=3
I/[SystemUI]StatusBar.NetworkController( 1473): refreshViews 1 connected={ data } level=1 mobileLabel=Verizon wifiLabel= emergencyOnly=false
I/[SystemUI]StatusBar.NetworkController( 1473): refreshViews 2 mPhoneSignalIconId=com.android.systemui:drawable/stat_sys_signal_bar5_1_fully mDataSignalIconId=com.android.systemui:drawable/stat_sys_signal_bar5_1_fully mDataTypeIconId=(null) mDataActivity=3 mLGNetworkController.mLGDataTypeIconId=com.android.systemui:drawable/stat_sys_data_connected_4g_nodata_vzw mLGNetworkController.mLGDataActivityIconId=com.android.systemui:drawable/stat_sys_data_fully_default_inandout_vzw
W/ProviderInstaller(20812): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
V/NativeCrypto(20812): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 286 native methods...
W/art (20812): Suspending all threads took: 14.018ms
W/System (20812): Could not create com.google.android.gms.org.conscrypt.OpenSSLSocketFactoryImpl with ClassLoader android.app.LoadedApk$WarningContextClassLoader@36e31021: com.google.android.gms.org.conscrypt.OpenSSLSocketFactoryImpl
W/ActivityThread(20812): ClassLoader.loadClass: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a context class loader. For example: Thread.setContextClassLoader(getClass().getClassLoader());
I/ProviderInstaller(20812): Installed default security provider GmsCore_OpenSSL
Sub CheckProviderInstaller As ResumableSub
' Don't forget to add to module:
'#AdditionalJar: com.google.android.gms:play-services-base
'Don't forget to add to the Manifest
' '************ Google Play Services Base ************
' AddApplicationText(
' <Activity android:name="com.google.android.gms.common.api.GoogleApiActivity"
' android:theme="@android:style/Theme.Translucent.NoTitleBar"
' android:exported="false"/>
' <meta-data
' android:name="com.google.android.gms.version"
' android:value="@integer/google_play_services_version" />
' )
' '************ Google Play Services Base (end) ************
Dim retVal As Boolean = False
Dim jo As JavaObject
jo.InitializeStatic("com.google.android.gms.security.ProviderInstaller")
Dim context As JavaObject
context.InitializeContext
Dim listener As Object = jo.CreateEventFromUI("com.google.android.gms.security.ProviderInstaller.ProviderInstallListener", _
"listener", Null)
Log("Installing security provider if needed...")
jo.RunMethod("installIfNeededAsync", Array(context, listener))
Wait For listener_Event (MethodName As String, Args() As Object)
If MethodName = "onProviderInstalled" Then
Log("Provider installed successfully")
retVal = True
Else
Log("Error installing provider: " & Args(0))
End If
Return retVal
End Sub
Wait For (CheckProviderInstaller) complete (success As Boolean)
Have you tried updating Google Play services on the device? Here's @Erel's posting: https://www.b4x.com/android/forum/threads/ssl-websocket-
I use the above posted code on a pure side loaded application. The code just updates Android's security provider. The error message you posted after updating to OkHttpUtils2 seem to indicate that the security provider is out of date. I'm pretty sure the code will fail on API levels below 21 (Android 5).But we have chosen to solely side-load our application to fleet tablets we are supporting
I/B4A (12092): ~l31131188:******* Main.Activity_Create: Finished
I/B4A (12092): ~i:** Activity (main) Resume **
I/B4A (12092): ~l41196610:******* Main.Activity_Resume: Started
D/GpsLocationProvider( 938): setRequest ProviderRequest[ON interval=0]
I/B4A (12092): ~l5168681749:Installing security provider if needed...
I/B4A (12092): ~l6168681753:Provider installed successfully
W/System.err(12092): javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
W/System.err(12092): at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.startHandshakecom.google.android.gms@201875006@20.18.75 (020300-314726893):25)
W/System.err(12092): at com.google.android.gms.org.conscrypt.KitKatPlatformOpenSSLSocketImplAdapter.startHandshakecom.google.android.gms@201875006@20.18.75 (020300-314726893):0)
W/System.err(12092): at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:242)
W/System.err(12092): at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:200)
W/System.err(12092): at okhttp3.internal.connection.RealConnection.buildConnection(RealConnection.java:174)
W/System.err(12092): at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:114)
W/System.err(12092): at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:196)
W/System.err(12092): at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:132)
W/System.err(12092): at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:101)
W/System.err(12092): at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
I/ActivityManager( 938): Start proc com.lge.p2pclients.tethering for broadcast com.lge.p2p/com.lge.p2pclients.tethering.P2pTetheringReceiver: pid=12126 uid=10093 gids={50093, 9997, 3003, 3001, 3002, 1028, 1015} abi=armeabi-v7a
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
W/System.err(12092): at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
W/System.err(12092): at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
W/System.err(12092): at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
W/System.err(12092): at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
W/System.err(12092): at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:179)
W/System.err(12092): at okhttp3.RealCall.execute(RealCall.java:63)
W/System.err(12092): at anywheresoftware.b4h.okhttp.OkHttpClientWrapper.executeWithTimeout(OkHttpClientWrapper.java:156)
W/System.err(12092): at anywheresoftware.b4h.okhttp.OkHttpClientWrapper.access$0(OkHttpClientWrapper.java:153)
W/System.err(12092): at anywheresoftware.b4h.okhttp.OkHttpClientWrapper$ExecuteHelper.run(OkHttpClientWrapper.java:201)
W/System.err(12092): at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422)
W/System.err(12092): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err(12092): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
W/System.err(12092): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
W/System.err(12092): at java.lang.Thread.run(Thread.java:818)
W/System.err(12092): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
W/System.err(12092): at com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:324)
W/System.err(12092): at com.android.org.conscrypt.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:225)
W/System.err(12092): at java.lang.reflect.Method.invoke(Native Method)
W/System.err(12092): at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err(12092): at com.google.android.gms.org.conscrypt.Platform.checkTrustedcom.google.android.gms@201875006@20.18.75 (020300-314726893):2)
W/System.err(12092): at com.google.android.gms.org.conscrypt.Platform.checkServerTrustedcom.google.android.gms@201875006@20.18.75 (020300-314726893):3)
W/System.err(12092): at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.verifyCertificateChaincom.google.android.gms@201875006@20.18.75 (020300-314726893):5)
W/System.err(12092): at com.google.android.gms.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/System.err(12092): at com.google.android.gms.org.conscrypt.NativeSsl.doHandshakecom.google.android.gms@201875006@20.18.75 (020300-314726893):6)
W/System.err(12092): at com.google.android.gms.org.conscrypt.ConscryptFileDescriptorSocket.startHandshakecom.google.android.gms@201875006@20.18.75 (020300-314726893):16)
W/System.err(12092): ... 29 more
W/System.err(12092): Caused by: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
W/System.err(12092): ... 39 more
I/B4A (12092): ~l4166846721:ResponseError. Reason: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found., Response:
Are you sure the server is allowing TLS 1.2? Maybe someone reconfigured the server and disabled TLS 1.2. On the above linked site, check the "Check for common vulnerabilities" box and see if your server still supports TLS 1.2
But another thing I noticed in the LOGCAT just PRIOR to SSL negotiation failure is that it appears there may be some communication with google services. This is NOT part of the standard SSL negotiation, as I would expect only primary, root, and intermediate CAs to be involved in the negotiation. But perhaps with Android, it is phoning home to the mother ship (google) and THAT may now be limiting us on TLS level that can be used.
If you using google play services such as google analytics or push notifications (Google Cloud Messaging), there is a very easy way to install a new SSL Security Provider (injecting an up to date openssl library that gets shipped and updated with the Google Play Services).
The only thing you need to do is to call the following method
within your first Activity. This will on the first application start inject the updated library and ever subsequent start it does nothing and wont slow down your applicationB4X:ProviderInstaller.installIfNeeded(getContext());
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?