Android WebView setCertificate 문제 SSL 문제

SSL 오류에 대한 많은 게시물과 정보를 보았고 직접 발견했습니다.

I 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();
    }

다음이 포함 된 .cer 파일로 :

----- 인증 시작 -----MIIEbjCCA1agAwIBAgILBAAAAAABElatYgQwDQYJKoZIhvcNAQEFBQAwVzELMAkG A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0wNzA1MDQxMDAw MDBaFw0xNDAxMjcxMTAwMDBaMHExCzAJBgNVBAYTAkJFMR0wGwYDVQQLExREb21h aW4gVmFsaWRhdGlvbiBDQTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTEoMCYG A1UEAxMfR2xvYmFsU2lnbiBEb21haW4gVmFsaWRhdGlvbiBDQTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBALSfSeaznwFVNtA2lWzLFlpscrXineL6OekK 3HNcoDt2bQUokw2lQvPoy + 7TMxoTJwrfXNFUYmqaFzbWPFiHHrJmH1VpK4lWR7TC UAzlXcH9KRtmc0P0b9EUTyptSFI69eSQP96y9BDV + fqslg0QMiPS01GnlYVQ + g8p naeITg0xm0RBjkEvbpoatLalWfFJWQl + fknTaTNLAJLFG0Igafhk39inRNGQXv05 rWt9 / tWLpAFk9qe0IITMBS8n7h7VJJauhEOkPkPzO5nX + fLePRnt0GXxScpI0jh9 xkjXcmG4xsJnCthlWv1b88X9voxpz5kgtursOYDpZqjuPZ1Ge4cCAwEAAaOCAR8w 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 + o 8Cr5UqwkGhmen2xSfIs6plTewcchfTrTvBqobfK / 33bKAw == ----- END CERTIFICATE -----

예외없이 완료되었지만 웹뷰에서 동일한 동작이 나타납니다. 먼저 SSL 오류가 발생한 다음 페이지를 통신 /로드 할 수 없다는 오류가 발생합니다.

누군가가 정보를 가지고 있다면 WebView에서 SSL이 제대로 작동하도록 할 수 있었거나 디버깅 방법으로 도움을 줄 수도 있습니다. 정말 감사하겠습니다.

처음부터 SSL에 대한 경험이 많지 않기 때문에 머리도 약간 터집니다.

* 공개 키 btw, 흥미롭지 않습니다.) (GlobalSign CA BE)

추가 정보 : SSL 예외 : 주요 오류 : 3 인증서 : 발급 대상 : CN = GlobalSign 도메인 유효성 검사 CA, 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를 얻었습니다.

11
задан havchr 1 July 2011 в 11:17
поделиться