首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android web视图中握手失败的SSL错误的最佳解决方案而不忽略SSL错误。

在android web视图中握手失败的SSL错误的最佳解决方案而不忽略SSL错误。
EN

Stack Overflow用户
提问于 2020-07-14 07:57:36
回答 1查看 8.6K关注 0票数 2

我创建了一个应用程序,它向用户显示一个特定的站点,并且我正在使用web视图来完成这项任务。当我试图加载特定的站点时,web视图什么也没有显示,日志猫说,

E/202: ERROR:ssl_client_socket_impl.cc(946)握手失败;返回-1,SSL错误代码1,net_error -202

因此,在进行了一些搜索之后,我发现这个回答忽略了这个,并使用下面的代码来加载该站点。

代码语言:javascript
复制
webView.setWebViewClient(new WebViewClient() {  
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {              
        handler.proceed();
        Log.d("ssl_error", error.toString());                
    }
});

当我把error.toString()发送给日志猫时,上面写着,

主要错误:3证书:颁发给: CN=GeoTrust RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US;on :该特定站点url的公司的一些详细信息。

但是我想在不忽略这个错误的情况下修复这个错误。

与前面提到的堆栈溢出回答一样,我无法匹配https://developer.android.com/training/articles/security-config的详细信息来解决这个问题,同时又不忽略它。我应该如何处理网络配置来解决这个问题?

注意:-我只想使用一个特定的站点。不需要与任何网站合作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-14 09:51:22

“主错误: 3”指的是在SSL_UNTRUSTED类(文档)中定义的SslError错误代码。

这意味着客户端已连接到具有不可接受的SSL证书链的服务器。特别是,您的设备不接受链的根CA作为受信任的。它可以是:

  • 自签证书
  • 具有根证书的证书链,该证书在密钥存储库中未被列为受信任的根证书:
    • 根可能已经掉了,例如,因为不值得信任!
    • 根可能是你的(过时的)设备还不知道的一个新的根,

  • 损坏的证书链

请注意,这些方案可能比过期的证书更糟糕/更危险。

首先,我将使用https://www.ssllabs.com/ssltest/来检查网址,看看它写了什么。根据所述内容,正确的修复可能是以下内容之一:

  • 与站点所有者联系,让他们更新站点的SSL证书。
  • 更新您的设备(客户端),以获得供应商认可的当前一组受信任的根证书。
  • 按照设备供应商的说明,将服务器的证书(不是根证书或中间CA证书)添加为受信任的证书。

注意最后一句实际上是说“我信任这台服务器”..。只有当您能够安全地获得服务器的证书时,才应该这样做。

对于一个Android应用来说,代表用户这么做是个坏主意。而信任请求许可的应用程序也是个坏主意。除非你确信这个应用程序是值得信赖的

为什么?因为能够安装受信任的根证书的应用程序可能会安装一个错误的证书,从而为各种恶意打开了大门。

更新

SSLTest结果表示证书链不完整,这解释了为什么要获得SSL_UNTRUSTED错误。

您应该向网站所有者报告这一点:

  • 证书链不完整,应该修复。
  • 该站点正在运行旧/过时的SSL软件。
  • 该网站还有许多其他安全漏洞。

如果他们没有反应,明智的做法是停止尝试使用他们的网站。无法安全地访问它。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62890524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档