i working on android project with mysql database and perfoming backend on Node.Js, i have a method that creates a new user by sending data through JSON file to the android app:
this code for Retrofit instantiation:
retrofit = new Retrofit.Builder()
                .baseUrl("https://ipAddress:port/")
                .addConverterFactory(ScalarsConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
this code for communication with node.js:
Buyer buyer = (Buyer) user;
                compositeSubs.add(myAPI.buyerSignUp(buyer.getEmail(), buyer.getName().split(" ")[0]
                        , buyer.getName().split(" ")[1], buyer.getPassword(), buyer.bringType(), buyer.getPhoneNumber())
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(s -> {   // onNext method
                            if (s.equals("false")) {
                                ((AuthListener) callBack).onSignUp(s, false);
                            } else if (s.equals("true")) {
                                ((AuthListener) callBack).onSignUp(s, true);
                            } else {
                                ((AuthListener) callBack).onSignUp(s, false);
                            }
                        }, throwable -> {   // onError method
                            Log.e(TAG, throwable.getMessage(), throwable);
                        }, () -> {          // onComplete method
                            Log.d(TAG, "completed");
                        }));
and this is the exception i got :
- Handshake failed
              javax.net.ssl.SSLHandshakeException: Handshake failed
                  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:423)
                  at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:281)
                  at okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:251)
                  at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:151)
                  at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:192)
                  at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:121)
                  at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:100)
                  at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
                  at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
                  at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                  at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:120)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
                  at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
                  at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:185)
                  at okhttp3.RealCall.execute(RealCall.java:69)
                  at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
                  at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:41)
                  at io.reactivex.Observable.subscribe(Observable.java:12036)
                  at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
                  at io.reactivex.Observable.subscribe(Observable.java:12036)
                  at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
                  at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:579)
                  at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
                  at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
                  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                  at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
                  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
                  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
                  at java.lang.Thread.run(Thread.java:764)
               Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x8f76da40: Failure in SSL library, usually a protocol error
              error:100000f7:SSL routines:OPENSSL_internal:WRONG_VERSION_NUMBER (external/boringssl/src/ssl/tls_record.c:235 0x9f174e9f:0x00000000)
                  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
                  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:351)
                    ... 33 more
why this error keeps showing, how to handle it and how to fix it?.