hav*_*chr 11 ssl android certificate webview
我看过很多关于SSL错误的帖子和信息,我自己偶然发现了一个.
我试图通过带有GlobalSign CA BE证书的Android WebView访问网页,我收到了一个不可信的错误.
对于大多数手机来说,它可以正常处理这个,并告诉处理程序继续.
但是,有些手机最终会在webview-client中收到onReceivedError,告诉它无法与服务器建立联系.这是在经历了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();
}
Run Code Online (Sandbox Code Playgroud)
使用包含以下内容的.cer文件:
----- BEGIN CERTIFICATE ----- MIIEbjCCA1agAwIBAgILBAAAAAABElatYgQwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0wNzA1MDQxMDAw MDBaFw0xNDAxMjcxMTAwMDBaMHExCzAJBgNVBAYTAkJFMR0wGwYDVQQLExREb21h aW4gVmFsaWRhdGlvbiBDQTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYG A1UEAxMfR2xvYmFsU2lnbiBEb21haW4gVmFsaWRhdGlvbiBDQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALSfSeaznwFVNtA2lWzLFlpscrXineL6OekK 3HNcoDt2bQUokw2lQvPoy + 7TMxoTJwrfXNFUYmqaFzbWPFiHHrJmH1VpK4lWR7TC UAzlXcH9KRtmc0P0b9EUTyptSFI69eSQP96y9BDV + fqslg0QMiPS01GnlYVQ + G8P naeITg0xm0RBjkEvbpoatLalWfFJWQl + fknTaTNLAJLFG0Igafhk39inRNGQXv05 rWt9/tWLpAFk9qe0IITMBS8n7h7VJJauhEOkPkPzO5nX + fLePRnt0GXxScpI0jh9 xkjXcmG4xsJnCthlWv1b88X9voxpz5kgtursOYDpZqjuPZ1Ge4cCAwEAAaOCAR8w ggEbMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMEsGA1UdIARE MEIwQAYJKwYBBAGgMgEKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2xvYmFs c2lnbi5uZXQvcmVwb3NpdG9yeS8wHQYDVR0OBBYEFDYSTp5xxCZB8frxKUy/F6 RT KLbrMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQv cm9vdC5jcmwwEQYJYIZIAYb4QgEBBAQDAgIEMCAGA1UdJQQZMBcGCisGAQQBgjcK AwMGCWCGSAGG + EIEATAfBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo // z9SzAN BgkqhkiG9w0BAQUFAAOCAQEAwyV5SvrNJm9AariUG + ag4WvSMZo/ifvFCiJ1ev27 QDScvJ6FSVl6lcwNLUQLx8sVEB7S3ON46l/1NVGmyD85kBWeXxXJt49da2OZaOFu XPydNzMKrodwSqLjqyZ9cwfk9wqqdY + m7psE0QVDdBq61MKdf7egbO0WmmdAVquD n0yc6yg0H43mWg9pQNmpnmr5iX/Q + IyzSC4LT/H5z/UOEQIMiRZzU10s0 +/eXwsl utVOj4WQP4iTeaUgrP + wisvLpVV4gzlBMqpdJZOn6u4YcrXiHX8IdBG2ASdOls + O 8Cr5UqwkGhmen2xSfIs6plTewcchfTrTvBqobfK/33bKAw == ----- END CERTIFICATE-- ---
它毫无例外地完成了,但我的webview仍然有相同的行为.首先是SSL错误,然后是错误,说它无法通信/加载页面.
如果有人有一些信息,已经能够在WebView中正常运行SSL,甚至只是帮助调试这个.我将不胜感激.
我的头脑也爆炸了一点,因为我开始时并不是很熟悉SSL.
*这是公钥,顺便说一句,没什么令人兴奋的;)(GlobalSign CA BE)
更多信息:ssl异常:主要错误:3证书:颁发给:CN = GlobalSign域验证CA,O = GlobalSign nv-sa,OU =域验证CA,C = BE;
发布者:CN = GlobalSign根CA,OU =根CA,O = GlobalSign nv-sa,C = BE;
错误3是,SSL_UNTRUSTED
但我确实感觉setCertificate函数不是为缺少的根或类似的东西添加可信证书,而是添加客户端证书以识别服务器期望的证书.关于这个功能的更多信息会很好,但似乎有点无证.
我通过一个名为ssltest.net的网站运行confied.payex.com:443并从那里下载证书.
我尝试解码证书,但它似乎无效(实际上我测试了 2 个不同的 X509 实现,并且都给了我一个“编码不正确”错误)。
您能否提供有关 SSL 例外的更多详细信息?
我没有找到太多有关该setCertificate方法的信息。我认为此方法需要服务器证书。您应该确保您解码的证书是最终实体证书而不是 CA 证书。
| 归档时间: |
|
| 查看次数: |
8593 次 |
| 最近记录: |