Я видел много постов и информацию об ошибках SSL, и я сам наткнулся на них.
Я пытаюсь получить доступ к веб-странице через Android WebView с сертификатом GlobalSign CA BE, и я получаюненадежная ошибка.
Для большинства телефонов это нормально работает и просто говорит обработчику продолжить.
Однако некоторые телефоны в конечном итоге получают ошибку onReceivedError в клиенте webview, сообщая, что он не может установить связь с сервером.Это происходит после того, как он прошел через onReceivedSslError и продолжил.
Я искал описания и нашел много описаний, касающихся HttpClient и либо установки собственного сертификата, либо просто обмана его для принятия всех.
Однако, так как я использовал WebView, я подумал, что буду использовать WebView.setCertificate (SslCertificate crt).Я искал обсуждения этой функции, но не нашел много / никакой информации.
Я получил сертификат, который, как говорили, был ненадежным, и сделал этот код:
try{
Certificate myCert = CertificateFactory.getInstance("X509").
generateCertificate(this.getResources().
openRawResource(R.raw.globalsign_ca_be));
X509Certificate x509 = (X509Certificate) myCert;
SslCertificate sslCert = new SslCertificate(x509);
webView.setCertificate(sslCert);
}
catch (CertificateException ex){
ex.printStackTrace();
}
с .cer файл, содержащий это:
1017 * ----- BEGIN CERTIFICATE ----- MIIEbjCCA1agAwIBAgILBAAAAAABElatYgQwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0wNzA1MDQxMDAw MDBaFw0xNDAxMjcxMTAwMDBaMHExCzAJBgNVBAYTAkJFMR0wGwYDVQQLExREb21h aW4gVmFsaWRhdGlvbiBDQTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYG A1UEAxMfR2xvYmFsU2lnbiBEb21haW4gVmFsaWRhdGlvbiBDQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALSfSeaznwFVNtA2lWzLFlpscrXineL6OekK 3HNcoDt2bQUokw2lQvPoy + 7TMxoTJwrfXNFUYmqaFzbWPFiHHrJmH1VpK4lWR7TC UAzlXcH9KRtmc0P0b9EUTyptSFI69eSQP96y9BDV + fqslg0QMiPS01GnlYVQ + g8p naeITg0xm0RBjkEvbpoatLalWfFJWQl + fknTaTNLAJLFG0Igafhk39inRNGQXv05 rWt9 / tWLpAFk9qe0IITMBS8n7h7VJJauhEOkPkPzO5nX + fLePRnt0GXxScpI0jh9xkjXcmG4xsJnCthlWv1b88X9voxpz5kgtursOYDpZqjuPZ1Ge4cCAwEAAaOCAR8w ggEbMA4GA1UdDwEB / wQEAwIBBjASBgNVHRMBAf8ECDAGAQH / AgEAMEsGA1UdIARE MEIwQAYJKwYBBAGgMgEKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2xvYmFs c2lnbi5uZXQvcmVwb3NpdG9yeS8wHQYDVR0OBBYEFDYSTp5xxCZB8frxKUy / F6RT KLbrMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQv cm9vdC5jcmwwEQYJYIZIAYb4QgEBBAQDAgIEMCAGA1UdJQQZMBcGCisGAQQBgjcK AwMGCWCGSAGG + EIEATAfBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo // z9SzAN BgkqhkiG9w0BAQUFAAOCAQEAwyV5SvrNJm9AariUG + ag4WvSMZo / ifvFCiJ1ev27 QDScvJ6FSVl6lcwNLUQLx8sVEB7S3ON46l / 1NVGmyD85kBWeXxXJt49da2OZaOFu XPydNzMKrodwSqLjqyZ9cwfk9wqqdY + m7psE0QVDdBq61MKdf7egbO0WmmdAVquD n0yc6yg0H43mWg9pQNmpnmr5iX / Q + IyzSC4LT / H5z / UOEQIMiRZzU10s0 + / eXwsl utVOj4WQP4iTeaUgrP + wisvLpVV4gzlBMqpdJZOn6u4YcrXiHX8IdBG2ASdOls + о 8Cr5UqwkGhmen2xSfIs6plTewcchfTrTvBqobfK / 33bKAw ==----- КОНЕЦ СЕРТИФИКАТА -----
Это завершено без исключения, но я все еще получил то же поведение от моего веб-просмотра.Сначала ошибка SSL, а затем ошибка, которая говорит о том, что она не может связаться / загрузить страницу.
Если у кого-то есть какая-либо информация, он смог заставить SSL работать должным образом в WebView или даже просто помочь в способах отладки.этот.Я был бы очень признателен.
Моя голова тоже немного взорвана, потому что я не очень разбираюсь в SSL с самого начала.
* это открытый ключ, кстати, ничего интересного;)(GlobalSign CA BE)
дополнительная информация: исключение ssl: первичная ошибка: 3 сертификата: выдан: CN = CA проверки домена GlobalSign, O = GlobalSign nv-sa, OU = CA проверки домена, C =BE;
Выдано: CN = Корневой CA GlobalSign, OU = Корневой CA, O = GlobalSign nv-sa, C = BE;
Ошибка 3: SSL_UNTRUSTED
У меня, однако, есть ощущение, что функция setCertificate состоит не в том, чтобы добавить доверенный сертификат для отсутствующего корня или аналогичного, а вместо этого, чтобы добавить сертификат клиента для идентификации с ожидающим его сервером.Было бы неплохо получить дополнительную информацию об этой функции, хотя она выглядит немного недокументированной.
Я получил CA, запустив confied.payex.com:443 через сайт ssltest.net и загрузив оттуда сертификат.