Bonjour,

J'essaye d'accéder via un programme Java à une servlet qui nécessite une authentification via un certificat.
J'utilise la librairie HTTPClient de Apache.
Le certificat est bien installé sur ma machine et je l'ai mis dans le keystore de mon JRE (cacerts).


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
KeyStore ksTrustStore = KeyStore.getInstance("JKS");
FileInputStream fis = new FileInputStream("path_to_jre/lib/security/cacerts");
ksTrustStore.load(fis, password.toCharArray());
fis.close();
SSLSocketFactory sf = new SSLSocketFactory(trustStore);
 
 SchemeRegistry registry = new SchemeRegistry();
 registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
 registry.register(new Scheme("https", sf,443));
 
ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);
HttpClient client =  DefaultHttpClient(ccm, params);
 
HttpGet get = new HttpGet("https://the_server/the_servlet");
HttpResponse response = client.execute(get);
...

Quand j'essaye d'accéder à https://the_server/the_servlet via un navigateur j'ai une pop-up qui me demande de confirmer le certificat client, puis j'ai la réponse du get qui s'affiche ("Hello world doGet()")

Mais le programme Java reste bloqué sur le "client.execute(get)" et n'en sort jamais

Est-ce que j'ai oublié quelque chose dans mon programme ?