J'essaye de charger un BKS avec HttpsUrlConnection
et avec le code suivant cela a fonctionné, cependant il a cassé la validation CA de CA par défaut avec mes autres serveurs.Chargement du certificat auto-signé à HttpsUrlConnection par défaut CA validation par défaut
try {
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance("BKS");
InputStream in = ctw.getResources()
.openRawResource(R.raw.bks);
ks.load(in, "password".toCharArray());
in.close();
tmf.init(ks);
TrustManager[] tm = tmf.getTrustManagers();
KeyManagerFactory kmf = KeyManagerFactory
.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, "password".toCharArray());
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(kmf.getKeyManagers(), tm, null);
HttpsURLConnection
.setDefaultHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String hostname,
SSLSession session) {
return true;
}
});
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
L'erreur que je reçois est:
com.android.volley.NoConnectionError:
javax.net.ssl.SSLHandshakeException:
java.security.cert.CertPathValidatorException:
Trust anchor for certification path not found.
J'utilise la bibliothèque Volley
pour les demandes de réseau. Mon code est-il erroné ou devrais-je modifier la bibliothèque Volley
?
Merci.