Ich habe eine .p12-Zertifikatsdatei, und ich verwende die SSL Converter, um es in eine .pem-Zertifikatsdatei zu konvertieren. Dann benutze ich diese PM-Zertifikat-Datei in meinem Android-Code wie folgt:So erstellen Sie https-Anfrage mit SSL-Zertifikat in Retrofit
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 war gescheitert an der Linie "ca = cfygenerateCertificate (instream);" mit CertificateException Nachricht.
Bitte nehmen Sie sich einen Blick auf diese Antwort: http://stackoverflow.com/a/31436459/4261176. –
https://gist.github.com/erikcaffrey/10af1cc0b99a54f5b9a8a7614cca6f0a Ich hoffe, es hilft jemandem! –
Verwenden Sie diese einfachste Lösung: https://stackoverflow.com/a/45855405/3448003 –