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)
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht haben Sie ein problem in R. raw.pem_certificate...
1) Versuchen, eine raw-öffentliche Zertifikat vom server mit openssl :
openssl s_client -connect {HOSTNAME}:{PORT} -showcerts
(bitte schauen Sie hier für details: https://superuser.com/questions/97201/how-to-save-a-remote-server-ssl-certificate-locally-as-a-file)
2), Wie setup Retrofit2 mit einem benutzerdefinierten SSL-brevet
https://adiyatmubarak.wordpress.com/tag/add-ssl-certificate-in-retrofit-2/
oder Retrofit1:
https://number1.co.za/use-retrofit-self-signed-unknown-ssl-certificate-android/
PS: es funktioniert bei mir, bitte nicht konvertieren PEM-Datei zu BKS.
InformationsquelleAutor Maxim Firsoff
Versuchen, die Antwort in dem folgenden link, bei mir hat es geklappt
Retrofit 2.3.0
Nachrüsten selbst signiertes SSL-Zertifikat
InformationsquelleAutor Gowsik K C
}
Nach der Lektüre viele post, blogs und gist schließlich fand ich einen Weg. Dies funktioniert für mich.
InformationsquelleAutor Jay