【问题标题】:SSLHandshakeException: SSL handshake aborted: ssl=0xbe6af938: I/O error during system call, Connection reset by peerSSLHandshakeException:SSL 握手中止:ssl=0xbe6af938:系统调用期间的 I/O 错误,对等方重置连接
【发布时间】:2021-01-01 11:21:28
【问题描述】:

出现以下错误:javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0xbe6af938: I/O error during system call, Connection reset by peer

改造类:

public class RetrofitClientInstance {

    private static Retrofit retrofit;
    

    public static Retrofit getRetrofitInstance() {
        
        if (retrofit == null) {
            Gson gson = new GsonBuilder().setLenient().create();

            retrofit = new retrofit2.Retrofit.Builder()
                    .client(HelperOkHttpClient.getOkHttpClient())
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }
}

此方法出现错误/异常:

private void makeRequestToSecondAuthStep(ArrayList<String> creds) {

        AuthCheckHTTP defectSpecific = RetrofitClientInstance.getRetrofitInstance().create(AuthCheckHTTP.class);
        Observable<ResponseSingleRequestAuth<Object>> observableDefectsRelated = defectSpecific.getAuthCheck();
        observableDefectsRelated
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .doOnNext(specficDefects -> {
                    Log.w("ASYNCLI", "In defectspecif");
                    if (HelperIsNull.isNull(creds.get(3))) {
                        creds.set(3, creds.get(5));
                    }
                    DataBaseHelper.deleteAllData();
                    PublisherNotificationSync.getInstance().setLastSyncDate(INITIAL_DATE);
                    writeCredentialsToLocalDb();

                    actMain.runOnUiThread(new Runnable() {
                                              @Override
                                              public void run() {
                                                  presenterAuthAct.downloadData();
                                              }
                                          }
                    );
                })
                .doOnError(
                        throwable -> {
                            HelperToastMaker.createMessage(App.getAppContext(), "У вашего пользователя нет прав на пользования мобильным приложением");
                            ((Button) mainAct.findViewById(R.id.button)).setEnabled(true);
                            AppProperties.setpIdentificator("");
                        }
                ).doOnComplete(() -> {
            Log.w("Event", "Fired i guess");
        }).subscribe(new Observer<ResponseSingleRequestAuth<Object>>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(ResponseSingleRequestAuth<Object> objectResponseSingleRequestAuth) {

            }

            @Override
            public void onError(Throwable e) {
              // do nothing
            }

            @Override
            public void onComplete() {

            }
        });

    }
}

也许您可以通过某种方式将标准 (SSL) 添加到此 Retrofit 类中,以前有没有人遇到过这个或类似的问题?

可能是什么问题?几个月前 - 一切正常,项目没有被触及(存档) 提前谢谢你

UPD:与证书无关,这是 SAP,他们自己更新

【问题讨论】:

  • 这不是应用相关的问题....检查服务器证书和过期日期....
  • 使用此链接检查您的服务器 ssl 错误ssllabs.com

标签: java android ssl retrofit2


【解决方案1】:

我不确定这里是否有足够的信息来准确诊断您的问题,但该错误表明 SSL 握手错误,这通常对我来说表明问题不在代码中,而是在 certs/可接受的通信通道加密算法。

Retrofit 是一个 REST 框架,所以我假设您在它之上编写了一个 API,并且 Retrofit 会处理您的 HTTP 会话和 SSL 内容。你说解决方案突然停止工作。您的改造依赖是最新的吗?也许让你的依赖项更新,重新打包你的应用程序,看看是否有效?

Retrofit/OkHTTP examples with TLS Context

【讨论】:

  • retrofit 已经更新到最新版本,所以几乎不是依赖问题
  • 你的服务器证书呢?你说几个月过去了,证书还有效吗?如果它已过期,您需要签发新的。
  • 我与一位支持专家交谈,他说“那里没有什么可更新的”,因为这是 SAP,他们自己做所有事情
  • 听起来你是作为客户端而不是服务器。您可以发布创建 SSLContext 对象的代码部分吗?
  • 我创建了一个 TSLFactory 类,其中 SSLContext context = SSLContext.getInstance ("TLS") 被写入;但是我不太明白如何以及在哪里从改造中连接它?
猜你喜欢
  • 2019-11-23
  • 2016-05-29
  • 2018-02-09
  • 2015-06-03
  • 1970-01-01
  • 2015-08-12
  • 2015-03-29
  • 2020-03-07
  • 2016-08-01
相关资源
最近更新 更多