Wie man https-request mit ssl-Zertifikat in Retrofit

Habe ich eine .p12-Zertifikatdatei, und ich nutze die SSL-Konverter zu konvertieren, um ein .pem-Zertifikatdatei. Dann nutze ich das pem Zertifikat-Datei in mein android-code wie folgt:

OkHttpClient okHttpClient = new OkHttpClient();
        try {
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            InputStream instream = context.getResources().openRawResource(R.raw.pem_certificate);
            Certificate ca;
            ca = cf.generateCertificate(instream);
            KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());
            kStore.load(null, null);
            kStore.setCertificateEntry("ca", ca);
            TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
            tmf.init(kStore);
            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(null, tmf.getTrustManagers(), null);
            okHttpClient.setSslSocketFactory(sslContext.getSocketFactory());
        } catch (CertificateException
                | KeyStoreException
                | NoSuchAlgorithmException
                | IOException
                | KeyManagementException e) {
            e.printStackTrace();
        }

        baseURL = endpoint;
        RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(baseURL)
                .setClient(new OkClient(okHttpClient))
                .build();

        service = restAdapter.create(DishService.class);

Aber dieser code funktioniert nicht. Es wurde versäumt in der Zeile "ca = cf.generateCertificate(instream);" mit CertificateException Nachricht.

Bitte werfen Sie einen Blick auf diese Antwort: stackoverflow.com/a/31436459/4261176.
gist.github.com/erikcaffrey/10af1cc0b99a54f5b9a8a7614cca6f0a ich hoffe, es hilft jemandem!
Verwenden Sie diese einfachste Lösung : stackoverflow.com/a/45855405/3448003
wenn Sie mit retrofit-2, öffnen Sie androidbie.com/2017/08/android-adding-file-certificate-to.html (diese Lösung funktioniert bei mir) und wenn Sie mit retrofit-1.7 öffnen Sie androidbie.com/2017/08/android-add-file-certificate-to.html (funktioniert auch für mich)

InformationsquelleAutor congtrungvnit | 2015-06-11

Schreibe einen Kommentar