I would like to override the onReceivedSslError() of a WebViewClient. Here I want to check if the error.getCertificate() certificate i
I think this should work (SSL_IDMISMATCH means "Hostname mismatch").
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
SslCertificate serverCertificate = error.getCertificate();
if (error.hasError(SSL_UNTRUSTED)) {
// Check if Cert-Domain equals the Uri-Domain
String certDomain = serverCertificate.getIssuedTo().getCName();
if(certDomain.equals(new URL(error.getUrl()).getHost())) {
handler.proceed();
}
}
else {
super.onReceivedSslError(view, handler, error);
}
}
If "hasError()" is not working, try error.getPrimaryError() == SSL_IDMISMATCH
Check Documentation of SslError for all error-types.
EDIT: I tested the function on my own self-cert server (its a Xampp), and I got Error #3.
That means you have to check for error.hasError(SslError.SSL_UNTRUSTED) for a self-signed cert.