我创建了一个应用程序,它向用户显示一个特定的站点,并且我正在使用web视图来完成这项任务。当我试图加载特定的站点时,web视图什么也没有显示,日志猫说,
E/202: ERROR:ssl_client_socket_impl.cc(946)握手失败;返回-1,SSL错误代码1,net_error -202
因此,在进行了一些搜索之后,我发现这个回答忽略了这个,并使用下面的代码来加载该站点。
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的详细信息来解决这个问题,同时又不忽略它。我应该如何处理网络配置来解决这个问题?
注意:-我只想使用一个特定的站点。不需要与任何网站合作
发布于 2020-07-14 09:51:22
“主错误: 3”指的是在SSL_UNTRUSTED类(文档)中定义的SslError错误代码。
这意味着客户端已连接到具有不可接受的SSL证书链的服务器。特别是,您的设备不接受链的根CA作为受信任的。它可以是:
请注意,这些方案可能比过期的证书更糟糕/更危险。
首先,我将使用https://www.ssllabs.com/ssltest/来检查网址,看看它写了什么。根据所述内容,正确的修复可能是以下内容之一:
注意最后一句实际上是说“我信任这台服务器”..。只有当您能够安全地获得服务器的证书时,才应该这样做。
对于一个Android应用来说,代表用户这么做是个坏主意。而信任请求许可的应用程序也是个坏主意。除非你确信这个应用程序是值得信赖的
为什么?因为能够安装受信任的根证书的应用程序可能会安装一个错误的证书,从而为各种恶意打开了大门。
更新
SSLTest结果表示证书链不完整,这解释了为什么要获得SSL_UNTRUSTED错误。
您应该向网站所有者报告这一点:
如果他们没有反应,明智的做法是停止尝试使用他们的网站。无法安全地访问它。
https://stackoverflow.com/questions/62890524
复制相似问题