I creating a application which display a specific site to the user and I'm using web view to acoomplish that task. When I try to load that specific site web view shows nothing and log cat says,
E/chromium: [ERROR:ssl_client_socket_impl.cc(946)] handshake failed; returned -1, SSL error code 1, net_error -202
So after some searching I found this answer to ignore this SSL Certificate error and using following code I'm enable to load that site.
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
Log.d("ssl_error", error.toString());
}
});
As I send error.toString()
to log cat, It says,
primary error: 3 certificate: Issued to: [some details of the company of that specific site] Issued by: CN=GeoTrust RSA CA 2018,OU=www.digicert.com,O=DigiCert Inc,C=US; on URL: [that spefic site url]
But I want to fix that error without ignoring that.
As in the previously mentioned stack overflow answer I'm unable to match the details of https://developer.android.com/training/articles/security-config to solve this problem without ignoring it. What should I do with network configuration to solve this problem ?
Note:- I want to work with only one specific site. No need to work with any site
The "Primary error: 3" is referring to the SSL_UNTRUSTED error code defined in the
SslError
class (documentation).It means that your client has connected to a server with an SSL certificate chain that is not acceptable. Specifically, your device does not accept the chain's root CA as trusted. It could be:
Note that these scenarios are potentially worse / more dangerous than an expired certificate.
I would start by using https://www.ssllabs.com/ssltest/ to check the URL and see what it says. Depending on what it says, the correct fix is likely to be one of the following:
Note that the last is effectively saying "I trust this server" ... and you should only do this if you can obtain the server's certificate securely.
(It would be (IMO) a bad idea for an Android app to do this on the user's behalf. And from the user's standpoint, it would be a bad idea to trust any Android app that requests permission to do this. Why? Because an app that is able to install trusted root certs could install a bad certificate, opening the door for all sorts of nastiness.)
UPDATE
The SSLTest results indicate that the certificate chain is incomplete, which explains why you are getting an SSL_UNTRUSTED error
You should report this to the site owner:
If they are not responsive, the wise course of action is stop trying to use their site. It cannot be accessed securely.