我正在尝试通过HTTPS加载WebView
的网页。
主机具有RSA X.509证书,密钥大小为1024位
错误消息:“errorCode = -2; description =找不到URL。”(请求后20秒内出现)。
在这种情况下如何加载页面?
我认为问题是WebView不喜欢密钥大小(< = 1024位)的证书。
1)尝试:
1.1)将handler.proceed()放到onReceivedSslError():未调用的方法;
1.2)在我的项目中替换android.net.http.SslError:无效;
1.3)强制WebView使用提供的KeyStore(source):不适用于API> = 18;
1.4)使用DefaultHttpClient加载HTML数据(绕过HTTPS)并使用WebView.loadDataWithBaseURL()显示:有效,但未加载静态数据(需要解析HTML并单独加载img / js)。
2)注意:
2.1)无法替换服务器上的证书;
2.2)如果我使用具有2048位密钥大小的证书的主机,则可以通过方法1.1)绕过SSL;;
2.3)证书是自签名的(但没有区别);
设备:带有API 18(4.3)的三星Galaxy S3。
[编辑]
我已将cert保存为DER,重命名为CER(cert.cer),将其置于内部存储的根目录,“从内部存储安装”,输入pin,“凭据使用:VPN和应用程序”,并显示“cert”成功安装“。
我试图再次运行WebView,输出:
1. Motorola Moto G“errorCode = -8; description =与服务器的连接超时。” (在30秒内);
2.三星Galaxy S3“onReceivedError:errorCode = -6; description =无法连接到服务器。” (也在30秒内)。
[编辑]
重现:
1.生成密钥对(私钥和X.509证书,带RSA 1024位密钥);
2.添加到密钥库;
3.部署到应用服务器(Tomcat);
4.指定HTTP的连接器;
5.尝试从WebView访问网页。
答案 0 :(得分:1)
的errorCode = -2; description =找不到URL。“(请求后20秒出现。)
如果这是HTTP状态404的结果,则表示(1)SSL部分正常工作,(2)所请求的资源不存在。它还可能表示连接超时或读取超时。如果是SSL / HTTPS问题,我会期待更具体的消息。