Comment faire la demande https avec un certificat ssl pour le Rétrofit
J'ai un .certificat p12, et j'utilise le SSL Convertisseur pour le convertir en un .pem fichier de certificat. Puis-je l'utiliser pem fichier de certificat dans mon code android comme ceci:
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);
Mais ce code ne fonctionne pas. Il a échoué à la ligne", ca = cf.generateCertificate(débit réservé);" avec CertificateException message.
- Veuillez prendre un coup d'oeil à cette réponse: stackoverflow.com/a/31436459/4261176.
- gist.github.com/erikcaffrey/10af1cc0b99a54f5b9a8a7614cca6f0a j'espère que cela aide quelqu'un!
- L'utilisation de cette solution la plus simple : stackoverflow.com/a/45855405/3448003
- si vous utilisez rénovation de 2, ouvert androidbie.com/2017/08/android-adding-file-certificate-to.html (cette solution fonctionne formulaire de moi) et si vous utilisez rénovation de 1,7 ouvrir androidbie.com/2017/08/android-add-file-certificate-to.html (fonctionne aussi pour moi)
Vous devez vous connecter pour publier un commentaire.
Peut-être que vous avez un problème dans R. raw.pem_certificate...
1) Essayez d'obtenir un raw public certificat de serveur à l'aide de openssl :
openssl s_client -connect {HOSTNAME}:{PORT} -showcerts
(veuillez voir ici pour les détails: https://superuser.com/questions/97201/how-to-save-a-remote-server-ssl-certificate-locally-as-a-file)
2) Comment le programme d'installation Retrofit2 avec un SSL personnalisé sertificate
https://adiyatmubarak.wordpress.com/tag/add-ssl-certificate-in-retrofit-2/
ou Retrofit1:
https://number1.co.za/use-retrofit-self-signed-unknown-ssl-certificate-android/
PS: cela fonctionne pour moi, s'il vous plaît ne pas convertir le fichier PEM pour BKS.
}
Après avoir lu beaucoup de post, les blogs et les gist j'ai enfin trouvé un moyen. Cela fonctionne pour moi.