gpt4 book ai didi

Android WebView setCertificate 问题 SSL 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:12 26 4
gpt4 key购买 nike

我看过很多关于 SSL 错误的帖子和信息,我自己也偶然发现了一个。

我正在尝试使用 GlobalSign CA BE 证书通过 Android WebView 访问网页,但出现了不可信错误。

对于大多数手机来说,它可以很好地处理这个问题,只需告诉处理程序继续即可。

然而,有些手机最终会在 webview 客户端中收到一个 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();
}

使用包含以下内容的 .cer 文件:

-----开始证书-----MIIEbjCCA1agAwIBAgILBAAAAAABELatYgQwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0wNzA1MDQxMDAwMDBaFw0xNDAxMjcxMTAwMDBaMHExCzAJBgNVBAYTAkJFMR0wGwYDVQQLExREb21haW4gVmFsaWRhdGlvbiBDQTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYGA1UEAxMfR2xvYmFsU2lnbiBEb21haW4gVmFsaWRhdGlvbiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALSfSeaznwFVNtA2lWzLFlpscrXineL6OekK3HNcoDt2bQUokw2lQvPoy+7TMxoTJwrfXNFUYmqaFzbWPFiHHrJmH1VpK4lWR7TCUAzlXcH9KRtmc0P0b9EUTyptSFI69eSQP96y9BDV+fqslg0QMiPS01GnlYVQ+g8pnaeITg0xm0RBjkEvbpoatLalWfFJWQl+fknTaTNLAJLFG0Igafhk39inRNGQXv05rWt9/tWLpAFk9qe0IITMBS8n7h7VJJauhEOkPkPzO5nX+fLePRnt0GXxScpI0jh9xkjXcmG4xsJnCthlWv1b88X9voxpz5kgtursOYDpZqjuPZ1Ge4cCAwEAAaOCAR8wggEbMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgEAMEsGA1UdIAREMEIwQAYJKwYBBAGgMgEKMDMwMQYIKwYBBQUHAgEWJWh0dHA6Ly93d3cuZ2xvYmFsc2lnbi5uZXQvcmVwb3NpdG9yeS8wHQYDVR0OBBYEFDYSTp5xxCZB8frxKUy/F6RTKLbrMDMGA1UdHwQsMCowKKAmoCSGImh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5uZXQvcm9vdC5jcmwwEQYJYIZIAYb4QgEBBAQDAgIEMCAGA1UdJQQZMBcGCisGAQQBgjcKAwMGCWCGSAGG+EIEATAfBgNVHSMEGDAWgBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUFAAOCAQEAwyV5SvrNJm9AariUG+ag4WvSMZo/ifvFCiJ1ev27QDScvJ6FSVl6lcwNLUQLx8sVEB7S3ON46l/1NVGmyD85kBWeXxXJt49da2OZaOFuXPydNzMKrodwSqLjqyZ9cwfk9wqqdY+m7psE0QVDdBq61MKdf7egbO0WmmdAVquDn0yc6yg0H43mWg9pQNmpnmr5iX/Q+IyzSC4LT/H5z/UOEQIMiRZzU10s0+/eXwslutVOj4WQP4iTeaUgrP+wisvLpVV4gzlBMqpdJZOn6u4YcrXiHX8IdBG2ASdOls+o8Cr5UqwkGhmen2xSfIs6plTewcchfTrTvBqobfK/33bKAw==-----证书结束-----

它无一异常(exception)地完成了,但我的 webview 仍然有相同的行为。首先是 SSL 错误,然后是无法通信/加载页面的错误。

如果有人有一些信息,已经能够让 SSL 在 WebView 中正常工作,或者甚至只是帮助调试它。我将不胜感激。

我的脑袋也有点炸了,因为我对 SSL 本来就不是很熟悉。

*顺便说一句,这是一个公钥,没什么好激动的 ;) (GlobalSign CA BE)

更多信息:SSL 异常:主要错误:3证书:颁发给:CN=GlobalSign Domain ValidationCA,O=GlobalSign nv-sa,OU=域名验证CA,C=BE;

颁发者:CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE;

错误 3 是,SSL_UNTRUSTED

但是我确实有一种感觉,setCertificate 函数不是为丢失的根或类似的添加受信任的证书,而是添加客户端证书以识别需要一个的服务器。不过,如果有更多关于此功能的信息会很好,它似乎有点未记录。

我通过一个名为 ssltest.net 的站点运行 confied.payex.com:443 并从那里下载证书,从而获得了 CA。

最佳答案

我尝试解码证书,但它似乎无效(实际上我测试了 2 个不同的 X509 实现,都给了我一个“不正确的编码”错误)。

您能否提供有关 SSL 异常的更多详细信息?

我没有找到太多关于 setCertificate 方法的信息。我认为这种方法需要服务器证书。您应该确保您解码的证书是终端实体证书而不是 CA 证书。

关于Android WebView setCertificate 问题 SSL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6511434/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com